entitymanager.merge()将在克隆的实体对象上工作吗

时间:2020-02-05 15:25:12

标签: java jpa

这是一个基本问题,但是我找不到很多信息。

用例如下: 我使用CriteriaQuery进行了搜索以查找x记录。 我在此方法中为启动实际搜索所做的最后一次调用是:

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

因此,这意味着我要取回的记录将附加到entityManager。

想象一下,我将深度克隆那些实体,更改那些克隆的实体中的某些值,然后尝试调用entityManager.merge(clonedEntity)。这样行吗? “合并”方法是否检查您实体中的“等于”方法以在数据库中查找相似对象并更新这些对象,否则将无法正常工作,并且您需要更改附加到实体管理器的实体才能更新这些记录在数据库中?

预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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

如果确实有ID,则可以将其合并。这取决于您是否使用生成的ID,以及克隆是否还会复制ID。