【问题标题】:JPA EntityManager: why merge() method returns managed entity?JPA EntityManager:为什么 merge() 方法返回托管实体?
【发布时间】:2019-03-30 18:07:53
【问题描述】:

merge() 方法的工作:

merge(source entity) 方法会将分离的实体状态(源)复制到托管实体实例(目标)。如果合并实体在当前会话中没有等价物,则将从数据库中获取一个。即使在合并操作之后,分离的对象实例也将继续保持分离状态。

我的问题是:

为什么merge() 方法将分离的实体状态复制到托管实体,而不是将相同的分离实体传递给持久化上下文?

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

    <T> T merge(T entity) 方法是根据 JPA 规范实现的。 https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#merge-T-

    返回:
    状态合并到的托管实例

    至于:

    为什么不将相同的分离实体传递给持久化上下文

    这正是它的作用。为了合并数据,会创建一个托管实体(或从缓存中获取),然后更新并返回。

    【讨论】:

      猜你喜欢
      • 2012-05-25
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2012-03-11
      • 2011-11-18
      • 1970-01-01
      相关资源
      最近更新 更多