【问题标题】:merge is used only for creating or updating?合并仅用于创建或更新?
【发布时间】:2011-04-20 17:00:54
【问题描述】:

如果我使用 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`

【问题讨论】:

    标签: java orm jpa merge


    【解决方案1】:

    它将创建一个新记录:

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

    • 如果实体被分离,则返回一个副本(object'),该副本是附加(托管)的

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

    【讨论】:

    • 我从我写在我的一个通用 Dao 上的评论中复制了它,因为它不是那么简单。我记得在意识到发生了什么之前我必须阅读规范几次:)
    猜你喜欢
    • 2016-02-08
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多