em.merge将对分离实体的状态做什么?

时间:2018-02-28 14:20:07

标签: hibernate jpa entitymanager openjpa

我有这样的代码

private Identifiable updateEntityInternal(JPABaseEntity entity) {

        Identifiable updated = null;
        try {
            updated = em.merge(entity);
            em.flush();

据我所知 em.merge 创建新实体,将状态从“旧”实体复制到新实体,管理新实体,分离“旧”实体。

我需要从实体中检索一些属性(数组,Lazy init)。

那么如果我填充到这个api的实体已经分离了会发生什么。这是否意味着在合并(复制状态)时它无法从我传递的实体中检索数组,因为它是分离的?那么合并后的新托管实体将不会有这个数组?

1 个答案:

答案 0 :(得分:0)

否....如果分离的实体由于延迟加载而未加载包含该集合,那么您尝试再次合并它,它将具有相同的状态(就好像它已经卸载一样)由于它的延迟加载而收集)....但是如果最初你加载了集合(例如通过显式调用它的getter)然后你将它设置为null然后你分离它并尝试再次合并它将保存为对集合的null引用(即带有空集合)