Apart from that latter consideration there is no need to invoke on an already persisted entity because any changes will automatically be saved at flush or commit time.
Those of you that have worked with plain Hibernate will probably have grown quite accustomed to using the method figures out whether the object is new or has already been saved before.
We kicked off our hunt for JPA implementation patterns with the Data Access Object pattern and continued with the discussion of how to manage bidirectional associations.
So what is that detached entity the message talks about? a detached object) is an object that has the same ID as an entity in the persistence store but that is no longer part of a persistence context (the scope of an a problem to persist the same object twice within one transaction.
The second invocation will just be ignored, although the persist operation might be cascaded to any associations of the entity that were added since the first invocation.
Using Spring declarative transaction management might be a good option, with Spring managing on its own.
Also do check for the Transaction boundaries, from where it is getting started and how are you propagating to Service/DAO layers.
It all seems to work quite well until we run into the dreaded "detached entity passed to persist" message.
Or a similar message when we use a different JPA provider than the Hibernate Entity Manager.
I've tried to debug, and check the console and it's running through the whole 800 records.
I don't get any error, but only the first record is inserted.
From JPA perspective, an entity is new when it has never been associated with a database row, meaning that there is no table record in the database to match the entity in question.
For instance, when executing the following test case: Post post = new Post(); Title("High-Performance Java Persistence"); entity Manager.persist(post); LOGGER.info("The post entity identifier is ", Id()); LOGGER.info("Flush Persistence Context"); entity Manager.flush(); Whenever an entity is persisted, Hibernate must attach it to the currently running Persistence Context which acts as a Map of entities.
I asked the maintainer, and he said he wasn't sure why this was happening. EDIT - Here is the datasources configuration from standalone-full.xml: Sorry, I edited my example leading up to the merge().