【发布时间】:2016-11-25 07:09:33
【问题描述】:
我有一个实体 Parent 和一个关系 @OneToMany 到另一个实体 Child。子集合被设置为延迟加载。
@Entity
class Parent{
@Id
String parentId;
@OneToMany(mappedBy="parent",fetch=FetchType.LAZY)
List<Child> children;
}
@Entity
class Child{
@Id
String childId;
@ManyToOne
@JoinColumn(name="parentId")
Parent parent;
}
List<Parent> loadParents() {
QParent qParent = QParent.parent;
List<Parent> parentList = query.select(qParent).from(qParent).fetch();
return parentList;
}
@Transactional
void test(){
List<Parent> parentList = loadParents();
for(Child child:parentList.getChildren()){
child.getChildId();
}
}
我得到了著名的
org.hibernate.LazyInitializationException: 延迟初始化失败 角色集合...无法初始化代理 - 没有会话
在我访问子列表的那一行的 test() 方法中出现异常。
我不想更改实体中的获取类型注释。
如何访问子实体?
【问题讨论】: