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?
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);
}