title: What does this error mean and how can I fix it?
body: <p>I'm using this DAO class which was generated by Hibernate Tools:</p>
  
  <pre><code>/**
   * Home object for domain model class Empleados.
   * @see com.hibernate.Empleados
   * @author Hibernate Tools
   */
  public class EmpleadosHome {
  
      private static final Log log = LogFactory.getLog(EmpleadosHome.class);
  
      private final SessionFactory sessionFactory = getSessionFactory();
  
      protected SessionFactory getSessionFactory() {
          try {
              return (SessionFactory) new InitialContext()
                      .lookup("java:/hibernate/SessionFactory");
          } catch (Exception e) {
              log.error("Could not locate SessionFactory in JNDI", e);
              throw new IllegalStateException(
                      "Could not locate SessionFactory in JNDI");
          }
      }
  
      public void persist(Empleados transientInstance) {
          log.debug("persisting Empleados instance");
          try {
              sessionFactory.getCurrentSession().persist(transientInstance);
              log.debug("persist successful");
          } catch (RuntimeException re) {
              log.error("persist failed", re);
              throw re;
          }
      }
  
      public void attachDirty(Empleados instance) {
          log.debug("attaching dirty Empleados instance");
          try {
              sessionFactory.getCurrentSession().saveOrUpdate(instance);
              log.debug("attach successful");
          } catch (RuntimeException re) {
              log.error("attach failed", re);
              throw re;
          }
      }
  
      public void attachClean(Empleados instance) {
          log.debug("attaching clean Empleados instance");
          try {
              sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
              log.debug("attach successful");
          } catch (RuntimeException re) {
              log.error("attach failed", re);
              throw re;
          }
      }
  
      public void delete(Empleados persistentInstance) {
          log.debug("deleting Empleados instance");
          try {
              sessionFactory.getCurrentSession().delete(persistentInstance);
              log.debug("delete successful");
          } catch (RuntimeException re) {
              log.error("delete failed", re);
              throw re;
          }
      }
  
      public Empleados merge(Empleados detachedInstance) {
          log.debug("merging Empleados instance");
          try {
              Empleados result = (Empleados) sessionFactory.getCurrentSession()
                      .merge(detachedInstance);
              log.debug("merge successful");
              return result;
          } catch (RuntimeException re) {
              log.error("merge failed", re);
              throw re;
          }
      }
  
      public Empleados findById(java.lang.Integer id) {
          log.debug("getting Empleados instance with id: " + id);
          try {
              Empleados instance = (Empleados) sessionFactory.getCurrentSession()
                      .get("com.hibernate.Empleados", id);
              if (instance == null) {
                  log.debug("get successful, no instance found");
              } else {
                  log.debug("get successful, instance found");
              }
              return instance;
          } catch (RuntimeException re) {
              log.error("get failed", re);
              throw re;
          }
      }
  
      public List findByExample(Empleados instance) {
          log.debug("finding Empleados instance by example");
          try {
              List results = sessionFactory.getCurrentSession().createCriteria(
                      "com.hibernate.Empleados").add(Example.create(instance))
                      .list();
              log.debug("find by example successful, result size: "
                      + results.size());
              return results;
          } catch (RuntimeException re) {
              log.error("find by example failed", re);
              throw re;
          }
      }
  }
  </code></pre>
  
  <p>This is my <code>hibernate.cfg.xml</code> file:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;
  &lt;hibernate-configuration&gt;
      &lt;session-factory name="SessionFactory"&gt;
          &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
          &lt;property name="hibernate.connection.password"&gt;1234&lt;/property&gt;
          &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3307/ejemplos&lt;/property&gt;
          &lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;
          &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5InnoDBDialect&lt;/property&gt;
          &lt;property name="connection.autocommit"&gt;true&lt;/property&gt;
          &lt;property name="current_session_context_class"&gt;jta&lt;/property&gt;
          &lt;mapping resource="com/hibernate/Empleados.hbm.xml" /&gt;
      &lt;/session-factory&gt;
  &lt;/hibernate-configuration&gt;
  </code></pre>
  
  <p>I get the following exception:</p>
  
  <pre><code>org.hibernate.HibernateException: Unable to locate current JTA transaction
      at org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:88)
      at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)
      at com.hibernate.EmpleadosHome.findById(EmpleadosHome.java:95)
      at org.apache.jsp.index_jsp._jspService(index_jsp.java:75)
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
      at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
      at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Thread.java:619)
  </code></pre>