具有hibernate条件的多连接级别
我不熟悉Hibernate,我想知道这类事情是如何与标准结合起来的: 我有三个班A、B和C。 A类与B类有@OneToMany关联,B类与C类有@ManyToOne关联 我希望有一个条件的请求,当我想要一个来自类a的对象时,可以检索所有的信息,这样我就可以遍历a.b,然后访问b.c 目前,我有一个只检索B的查询:具有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
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容器的属性