JPA: check whether an entity object has been persisted or not

ejb, jakarta-ee, java, jpa

Solution

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

Problem

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?

Original source