问题
Is there a general method that can
if(entity is persisted before){
entity = entity.merge();
}else{
entity.persist();
}
So the method contain above logic is safe everywhere?
回答1:
If you need to know is object already in persistence context you should use contains
method of EntityManager
.
Only EntityManager
can tell you is entity persisted or not, entity does not have such information.
Here you can check javadoc for contains method.
if (!em.contains(entity)) {
em.persist(entity);
} else {
em.merge(entity);
}
回答2:
To check if entity object has been persisted or not by the current PersistenceContext you can use the EntityManager method contains(Object entity)
来源:https://stackoverflow.com/questions/16092008/jpa-check-whether-an-entity-object-has-been-persisted-or-not