在今天的采访中,我被问到关于Hibernate急切加载的问题。问题是:如果有一个Employee类和一个Address class and relationship:1 employee -->多个地址。如何使用单个查询来查询Employee类并获取所有地址?
我提到过,我们可以在Address...but上打开预加载,这将导致N+1 sql。
要求是使用1个sql加载所有员工和地址。答案应该是与Hibernate Criteria API有关。当我在网上看的时候,我不确定如何才能做到这一点。如果你有ANy的想法,我将不胜感激。
发布于 2010-12-17 14:18:54
从hibernate reference:
List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.setFetchMode("kittens", FetchMode.EAGER)
.list();这将检索一个名为Fritz%的猫的列表,这些猫已经加载了它们的配偶引用,它们的kitten集合也已经加载。
应该尝试一下类似这样的东西,以检查生成的sql,看看它是否在fetch more设置为Eager的情况下对引用执行了外连接。
https://stackoverflow.com/questions/4467808
复制相似问题