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#4122347
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4122347
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user