java - 合并仅用于创建或更新?

标签 java orm jpa merge

如果我使用 ex.merge(obj),现在如果在对象 obj 中我将主键设置为数据库中不存在的值,它会创建新记录还是会抛出异常?

例如

if obj with pk val = 19 doesnot exist in database,and i set
obj.setPk(20);
obj.setName("nm");

em.merge(obj)  // will this throw an exception or create a new record?`enter code here`

最佳答案

它将创建一个新记录:

  • 如果实体已经在持久性上下文( session )中,则不采取任何操作,级联除外

  • 如果实体被分离,则返回一个副本(对象'),它被附加(管理)

  • 如果实体是临时的(新实例),则保存它并返回持久(和托管)副本

关于java - 合并仅用于创建或更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853813/

相关文章:

java - 复制 ObservableList java

java - hibernate.jdbc.fetch_size 和 hibernate.jdbc.batch_size 有什么区别?

java - 如何防止 JPA 实体出现 ClassCastException?

java - JPA 在没有直接关系的实体之间分配数据

java - @ManyToOne JPA 关联和级联...不确定如果我删除一个对象会发生什么

Java:将变量存储在文件中

java - 创建和使用 String 对象来锁定线程同步是一个好习惯吗?

Java抽象类+继承——范围或名称解析

php - 如何用 Doctrine 做全文检索?

sql - 在 Play with Scala 中编写 SQL?