3 Replies Latest reply on Jul 19, 2007 6:29 AM by Andrea

    Single EntityManager

    Yoav Al Newbie

      Hello,

      i have a webapp build with seam,ejb3 and jsf.
      in the application i have several different action to manipulate the DB.
      not only from the webclient (browser) but from web services.

      my broblem is that if a web service changed some thing it doesn't reflect on the web (the DB has chaged).

      i have printed the id of the entetyManager (hashcode) and i'm getting a different one for each request.
      my entityManager is injected using seam.
      this is a big issue for me since i have wrong data in my web.

      here is my persistence.xml:

      <?xml version="1.0" encoding="UTF-8"?>
      <persistence xmlns="http://java.sun.com/xml/ns/persistence"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
       xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
      
       <persistence-unit name="account">
       <jta-data-source>java:/jdbc/wml</jta-data-source>
       <properties>
       <property name="jboss.entity.manager.factory.jndi.name"
       value="java:/wmlEntityManagerFactory" />
       <property name="hibernate.dialect"
       value="org.hibernate.dialect.MySQLInnoDBDialect" />
       </properties>
       </persistence-unit>
      
      </persistence>
      

      and here is my components.xml:
      ....
      <component name="wmlEntityManager"
       class="org.jboss.seam.core.ManagedPersistenceContext" auto-create="true">
       <property name="persistenceUnitJndiName">java:/wmlEntityManagerFactory</property>
       </component>
      .....
      

      and the DAO:
      ....
      @Name("genericDao")
      public abstract class GenericDaoImpl<T> implements GenericDao<T> {
      
       @In(value="wmlEntityManager")
       EntityManager em;
      
       public T get(Serializable id) {
       return em.find(getPersistentClass(), id);
       }
      ......