JPA:检查实体对象是否已持久化

2022-09-03 13:13:25

有没有一种通用的方法可以

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

那么包含上述逻辑的方法到处都是安全的吗?


答案 1

如果您需要知道对象是否已经在持久性上下文中,则应使用 的方法。containsEntityManager

只能说明实体是否持久化,实体没有这样的信息。EntityManager

在这里,您可以检查javadoc的包含方法

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

答案 2

要检查实体对象是否已由当前持久性上下文持久化,您可以使用 EntityManager 方法 contains(对象实体)


推荐