问题
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