JPA EntityManager:为什么merge()方法返回托管实体?

时间:2018-10-26 03:23:32

标签: hibernate jpa

merge()方法的工作:

  

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

我的问题是:

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

1 个答案:

答案 0 :(得分:0)

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

  

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

至:

  

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

这就是它的作用。并且为了合并数据,创建(或从缓存中获取)受管实体,然后对其进行更新并返回。