Hello, I get NonUniqueObjectException when I call addCountry() on following bean.
em.contains(country) does not find country object, however
Contexts.lookupInStatefulContexts("country") does find it. But why calling
em.find method invocation makes something to inert found entity into any contexts ?
I found in seam examples that db lookup is based on query result, why is that so and not
based on em.find or em.contains ?
@Stateful
| @Scope(ScopeType.SESSION)
| @Name("countryCreator")
| public class CountryCreatorBean implements CountryCreatorLocal {
| @PersistenceContext
| private EntityManager em;
| @In
| private Country country;
| @EJB
| private LocationLocal locationBean;
| public void addCountry() {
| country.setId("pl");
| country.setName("Poland");
| System.out.println(em.contains(country)); //prints false
| System.out.print(Contexts.lookupInStatefulContexts("country"));
//this finds object [id=pl;name=Poland]
| if( em.find(Country.class,country.getId()) != null ) //this triggers
exception
| em.persist(country);
| // locationBean.add(country);
| }
| @Remove
| public void destroy() {}
| }
ERROR [GraphElement] action threw exception: javax.ejb.EJBTransactionRolledbackException:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value
was already associated with the session: [pl.labno.bernard.bidbull.locations.Country#pl]
| javax.el.ELException: javax.ejb.EJBTransactionRolledbackException:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value
was already associated with the session: [pl.labno.bernard.bidbull.locations.Country#pl]
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4122347#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...