Java 合并仅用于创建或更新?

Java 合并仅用于创建或更新?,java,orm,jpa,merge,Java,Orm,Jpa,Merge,如果我使用ex.merge(obj),现在如果在objectobj中我将主键设置为数据库中不存在的值,它会创建新记录还是引发异常 比如说 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

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

比如说

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`

它将创建一个新记录:

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

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

  • 如果实体是暂时的(新实例),则会保存该实体并返回一个持久(和托管)副本


我从我在一个普通Dao上写的评论中复制了它,因为它不是那么简单。我记得在意识到发生了什么之前,我已经阅读了几次规范:)