我是Hibernate的新手,我想知道Criteria的这类事情:
我有三个班级A,B和C. A类与B类有@OneToMany关联.B类与C类有@ManyToOne关联。
我想要一个使用Criteria的请求,当我需要A类中的对象时,可以检索所有信息,以便我可以遍历A.Bs然后访问b.c
目前我的查询只检索B:
session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.setFetchMode("B", FetchMode.JOIN)
.uniqueResult();
感谢您的帮助
编辑: 我试过了:
session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.createCriteria("Bs")
.createCriteria("C")
.uniqueResult();
但是这个以这个错误结束了:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
答案 0 :(得分:1)
找到解决方案:
session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.setFetchMode("Bs", FetchMode.JOIN)
.setFetchMode("Bs.c", FetchMode.JOIN)
.uniqueResult();
其中'Bs'是包含@OneToMany关联的A的属性,'c'是B容器的属性@ManyToOne关联。