JPA: проверьте, сохранен ли объект объекта или нет.

Существует ли общий метод, который может

 if(entity is persisted before){
     entity = entity.merge();
 }else{
     entity.persist();
 }

Таким образом, метод содержит выше логику, которая безопасна везде?

Ответ 1

Если вам нужно знать объект уже в контексте персистентности, вы должны использовать метод contains EntityManager.

Только EntityManager может сказать вам, что сущность сохраняется или нет, сущность не имеет такой информации.

Здесь вы можете проверить javadoc для contains method.

if (!em.contains(entity)) {
  em.persist(entity);
} else {
  em.merge(entity);
}

Ответ 2

Чтобы проверить, был ли объект сущности сохранен или нет текущим PersistenceContext, вы можете использовать метод EntityManager содержит (объект объекта)