阅读本文enter link description here
后我认为获取模式= LAZY将始终导致N + 1问题。这是真的?如果是这样,为什么?即使获取类型为LAZY,OpenJPA / Hibernate也应该能够优化查询。否?
答案 0 :(得分:0)
您可以在查询中指定eager fetch以避免它。这会生成一个JOIN sql。
Criteria c = session.createCriteria(Entity1.class);
c.setFetchMode("anotherObj", FetchMode.JOIN)
return c.list();
答案 1 :(得分:0)
是的,它会的。但是只有在访问关系中定义的对象时才会执行额外的SELECT(这就是为什么它被称为LAZY加载)。
这篇文章更详细地解释了它:http://www.mkyong.com/hibernate/hibernate-fetching-strategies-examples/
干杯