1

我是 Hibernate 的新手,我想知道如何使用 Criteria 进行此类操作:

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

我想要一个使用 Criteria 的请求,当我想要 A 类的对象时检索所有信息,以便我可以遍历 A.Bs 然后访问 bc

目前我有一个只检索 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
4

1 回答 1

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 关联的属性。

于 2013-01-21T20:35:00.793 回答