我有一个具有此映射的用户实体:
@OneToMany(mappedBy = "supervisor", fetch = LAZY, cascade = [CascadeType.REFRESH])
List<Group> supervisedGroups = new ArrayList<Group>()
以及具有此映射的 Group 实体:
@ManyToOne(fetch = LAZY, cascade = [CascadeType.REFRESH])
@JoinColumn(name = "supervisor")
User supervisor
感谢存储库,我获取了用户
User user = userRepository.findById(id)
findById 方法由事务包装(方法被事务管理器通知拦截),JPA 工作单元的持续时间与请求持续时间一样长(每个视图的会话)。
当我得到用户时,我会做一个
user.getSupervisedGroups()
这会返回一个空列表。集合类型是 Eclipselinks 的 IndirectList,即使我调用 size() 方法,它也无济于事。
但是如果我执行
entitymanager.refresh(user)
user.getSupervisedGroups()
然后我的列表中有 2 项...为什么?这是否意味着 EclipseLink 根本不支持对集合进行 LAZY 获取?