具有hibernate条件的多连接级别

具有hibernate条件的多连接级别,hibernate,join,criteria,fetch,Hibernate,Join,Criteria,Fetch,我不熟悉Hibernate,我想知道这类事情是如何与标准结合起来的: 我有三个班A、B和C。 A类与B类有@OneToMany关联,B类与C类有@ManyToOne关联 我希望有一个条件的请求,当我想要一个来自类a的对象时,可以检索所有的信息,这样我就可以遍历a.b,然后访问b.c 目前,我有一个只检索B的查询: session.createCriteria(A.class) .add(Restrictions.idEq(aId)) .setFetchMode("B", FetchMode.JO

我不熟悉Hibernate,我想知道这类事情是如何与标准结合起来的:

我有三个班A、B和C。 A类与B类有@OneToMany关联,B类与C类有@ManyToOne关联

我希望有一个条件的请求,当我想要一个来自类a的对象时,可以检索所有的信息,这样我就可以遍历a.b,然后访问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
找到解决方案:

session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.setFetchMode("Bs", FetchMode.JOIN)
.setFetchMode("Bs.c", FetchMode.JOIN)
.uniqueResult();
其中,“Bs”是包含@OneToMany关联的A的属性,“c”是@manytone关联的B容器的属性。

找到了解决方案:

session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.setFetchMode("Bs", FetchMode.JOIN)
.setFetchMode("Bs.c", FetchMode.JOIN)
.uniqueResult();
其中,“Bs”是包含@OneToMany关联的A的属性,“c”是@manytone关联的B容器的属性