Hibernate Criteria API

时间:2010-12-17 04:56:50

标签: hibernate

我今天在采访中被问到有关Hibernate渴望加载的问题。问题是:如果有一个Employee类和一个地址类和关系:1名员工 - >很多地址。 如何使用单个查询查询Employee类并获取所有地址?

我提到我们可以打开地址上的急切加载......但这会导致N + 1平方。

要求是使用1 sql加载所有员工和地址。 答案应该与Hibernate Criteria API有关。当我在网上看时,我不确定如何实现这一目标。 我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

来自hibernate reference:

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .setFetchMode("mate", FetchMode.EAGER)
    .setFetchMode("kittens", FetchMode.EAGER)
    .list();

这将检索一个名为Fritz%的猫的列表,并且已经加载了它们的配偶引用,并且它们的小猫集合也已经加载。

应该尝试使用类似的东西来检查生成的sql,看看它是否正在对引用进行外连接,并将fetch更多设置为Eager。