我有这样的代码
private Identifiable updateEntityInternal(JPABaseEntity entity) {
Identifiable updated = null;
try {
updated = em.merge(entity);
em.flush();
据我所知 em.merge 创建新实体,将状态从“旧”实体复制到新实体,管理新实体,分离“旧”实体。
我需要从实体中检索一些属性(数组,Lazy init)。
那么如果我填充到这个api的实体已经分离了会发生什么。这是否意味着在合并(复制状态)时它无法从我传递的实体中检索数组,因为它是分离的?那么合并后的新托管实体将不会有这个数组?
答案 0 :(得分:0)
否....如果分离的实体由于延迟加载而未加载包含该集合,那么您尝试再次合并它,它将具有相同的状态(就好像它已经卸载一样)由于它的延迟加载而收集)....但是如果最初你加载了集合(例如通过显式调用它的getter)然后你将它设置为null然后你分离它并尝试再次合并它将保存为对集合的null引用(即带有空集合)