【问题标题】:Will entitymanager.merge() work on a cloned entity objectentitymanager.merge() 会在克隆的实体对象上工作吗
【发布时间】:2020-02-05 15:25:12
【问题描述】:

这是一个基本问题,但我找不到太多关于此的信息。

用例如下: 我使用 CriteriaQuery 进行了搜索以找到 x 条记录。 我在此方法中发起实际搜索的最后一次调用如下:

getEntityManager().createQuery(query).setMaxResults(MAX_ROWS).getResultList())

所以这意味着我要返回的记录附加到 entityManager。

想象一下,我将深度克隆这些实体,更改这些克隆实体中的一些值,然后尝试调用 entityManager.merge(clonedEntity)。这行得通吗? 'merge' 方法是否检查实体中的 'equals' 方法以在数据库中找到类似的对象并更新这些对象,否则这将不起作用,您需要更改附加到 entitymanager 的实体才能更新这些记录在数据库中?

提前感谢您的帮助

【问题讨论】:

  • 只有分离的实体才需要合并。
  • 谢谢你,这就是我需要知道的。

标签: java jpa


【解决方案1】:

可以更新entitymanager控制的对象,不需要合并。克隆的实体是分离的,因此您需要将其持久化(如果它没有 id),它将代表一个新对象,因此是数据库中的一个新条目。

如果它确实有一个 id,你可以合并它。这取决于您是否使用生成的 id 以及克隆是否也复制 id。

【讨论】:

  • 如果你合并一个已经有 id 的分离实体,JPA 会将它与现有实体合并,而不是创建一个新实体。这实际上是使用合并而不是持久化的目标。
猜你喜欢
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多