em.merge将对分离实体的状态做什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了em.merge将对分离实体的状态做什么?相关的知识,希望对你有一定的参考价值。
我有这样的代码
private Identifiable updateEntityInternal(JPABaseEntity entity) {
Identifiable updated = null;
try {
updated = em.merge(entity);
em.flush();
据我所知em.merge创建新实体,将状态从“旧”实体复制到新实体,管理新实体,分离“旧”实体。
我需要从实体中检索一些属性(数组,Lazy init)。
那么如果我填充到这个api的实体已经分离了会发生什么。这是否意味着在合并(复制状态)时它无法从我传递的实体中检索数组,因为它是分离的?那么合并后的新托管实体将不会有这个数组?
答案
否....如果分离的实体不包含该集合,因为它由于延迟加载而未加载,那么您尝试再次合并它,它将具有相同的状态(就好像它有一个卸载的集合,因为它的延迟加载)....但是如果最初你加载了集合(例如通过显式调用它的getter)然后你将它设置为null然后你分离它并尝试再次合并它,它将保存为空引用集合(即带有空集合)
以上是关于em.merge将对分离实体的状态做什么?的主要内容,如果未能解决你的问题,请参考以下文章