组织映射到地址为1对1:
组织:
<one-to-one class="Address" constrained="true" name="address" property-ref="organizationId"/>
地址:
<many-to-one class="Organization" name="organization">
<column name="OrganizationID" not-null="false" unique="true"/>
</many-to-one>
此查询为每个Organization + 1生成addtitional select:
query = session.createQuery("select o from Organization as o where o.isCool=0").setReadOnly(true);
organizations = query.list();
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html告诉fetch="join"
,但这没有任何区别。如何解决这个问题呢?任何帮助表示赞赏。
修改 在调试器中,我可以看到该地址实际上并不是延迟加载的,我不知道为什么。
答案 0 :(得分:1)
由于你使用HQL来获取你的东西,所以简单地使用你正在尝试的注释或属性是没有用的,以避免n + 1问题。
正确的解决方案是在查询中使用'FETCH JOIN'子句。您可以按照以下链接获取更多详细信息: http://www.realsolve.co.uk/site/tech/hib-tip-pitfall.php?name=n1selects