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 содержит (объект объекта)