Probably the second product has the same PK... - please check.
thanks,
-marina
> I persist an Entity object using the following code (in a Java SE
> environment):
> this.product = new Product();
>
> ... web app adds data to the fields of Product ...
>
> EntityManager em = DbUtil.getEm();
> em.getTransaction().begin();
> em.persist(product);
> em.getTransaction().commit();
> em.close();
>
> This works fine for the first entity saved to the database.
> However, when I try to persist a second Product,
> I get the following exception:
>
> -----
> java.lang.IllegalArgumentException: Can not PERSIST detatched
> object: crud.models.Product_at_1f2be27.
> oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:3154)
> oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:288)
> oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3131)
> oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:96)
> crud.controllers.Admin.create(Admin.java:29)
>
> -----
> The EJB3.0 spec says that:
>
> A detached entity may result from transaction commit (see section
> 3.3.3), from transaction rollback (see
> section 3.3.4), from serializing an entity or otherwise passing
> an entity by value (e.g., to a separate
> application tier, through a remote interface, etc.)
>
> Since 'product' is a new object, how come it is being considered a
> 'detached entity' when persist()
> is called on it?
>
> Thanks for any insight into this,
>
> -- Pierre
>