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

标签 java jakarta-ee jpa ejb

有没有通用的方法可以

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

所以包含上述逻辑的方法在任何地方都是安全的?

最佳答案

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

只有 EntityManager 可以告诉您实体是否持久化,实体没有此类信息。

在这里你可以检查 contains method 的 javadoc .

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

关于java - JPA:检查实体对象是否已持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092008/

相关文章:

java - 无法使用私有(private)变量对非静态字段 memberVariable 进行静态引用

java - 如何在 jsp 文件中的查询语句中使用从 servlet 检索的数据?

java - 当 Eclipse 自动部署时,已部署的 War (JBoss) 的大小会增加。为什么会发生这种情况?

java - 如何在 Java EE 应用程序中锁定数据库记录?

java - 如何将字符串拆分为单词和非单词

java - Play Framework 2 设置表单输入类

JPA:Eclipselink不尊重em.remove()

java - 使用 OneToOne 进行 hibernate

java - 如何在 Java 中引用外部库?

java - jvm 版本 1.4.2_03 不适合此产品。 1.5或更高是必需的问题