【发布时间】:2015-08-12 12:14:19
【问题描述】:
我现在一直在搜索 JPA 实体生命周期。 但是现在,关于实体生命周期存在一些缺失点。我在其中一个 stackoverflow 帖子中找到了以下图形,请记住,此图已被投票。
根据这张图,当我们持久化实体时,它就变成了托管的。 好的 。没问题 。 当我们提交时,数据进入数据库。好的 。 没问题。 但是图表向我们展示了这个提交操作使实体分离! 让我们看看下面的伪代码。
entityManager.persist(entity);
transaction.commit(); // action completed and entity has become detached.(According to the diagram.)
entityManager.remove(entity); //Attention this step please .
在上一步(提交步骤)。那么如何才能移除一个分离的对象呢? 如果这个实体变得分离,我们都知道不可能管理一个分离的实体,因为它不再与持久化上下文关联。
那么如何才能移除一个分离的对象呢?你能在这一点上澄清一下吗? 提前致谢!
【问题讨论】:
-
你的意思是“entityManager.remove(entity); // 实体已经在这里分离了?”请澄清这个细节
-
我的意思是“如果实体在提交后变得分离(根据图表),怎么可能删除这个实体?因为分离意味着它不再与持久性上下文相关联并且不能执行任何操作在分离实体上“
-
取决于 PersistenceContext ...参见datanucleus.org/products/accessplatform_4_2/jpa/… EM.close 可以是分离它的操作,具体取决于上下文