为什么JPA不为延迟加载的关系提供loadChildren()方法?

时间:2009-10-03 13:06:38

标签: hibernate jpa lazy-loading

有些时候我想将关系定义为延迟加载,因为90%的时间我不想要子实体,但在某些情况下也有可能同时获得整个层次结构。我不想通过使用命名查询来实现这一点,因为当我转换为例如父子层次结构时,父子层次结构非常有用。 JSON格式。目前我的脏黑客是调用.getChildEntities()。size()来强制同一事务中的延迟加载。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

当然取决于JPA的实施。一些(大多数)将使用您引用的方法调用加载所有内容,但有些人可以发出COUNT(*)查询以获取大小也是出于内存管理的原因(不希望在有很多情况下加载所有元素)

- 安迪(DataNucleus

答案 1 :(得分:0)

可能您可以使用JOIN FETCH子句

http://download.oracle.com/docs/cd/E16764_01/apirefs.1111/e13046/ejb3_langref.html#ejb3_langref_fetch_joins

章节:10.2.3.5.3。 JPQL Fetch Joins