合并仅用于创建或更新?

时间:2010-10-04 08:57:05

标签: java orm jpa merge

如果我使用ex.merge(obj),现在如果在object 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`

1 个答案:

答案 0 :(得分:3)

它将创建一个新记录:

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

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

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