2

是否可以仅在特定查询中急切地获取实体层次结构中的所有集合?

例如,

实体Department有一个实体Employee的列表。Employee有一个实体Address 列表和一个实体Credentials列表。Department 有另一个实体Project列表。

我想在特定查询中而不是在其他情况下急切地获取所有这些集合(在我的实际情况下有更多集合)SELECT dept FROM Department dept(因此不能使用 FetchType.EAGER 进行注释)。可能吗?

我正在使用 Eclipselink。

提前致谢。

4

3 回答 3

7

您可以使用连接提取、批量提取或加载组。

我会推荐批量获取而不是连接获取,因为它会在多个集合中表现得更好。

看,

http://java-persistence-performance.blogspot.com/2010/08/batch-fetching-optimizing-object-graph.html

此外, http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/q_batch.htm#batch

http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/q_join_fetch.htm#fetch

http://wiki.eclipse.org/EclipseLink/Examples/JPA/AttributeGroup#Load_Examples

于 2013-01-03T14:00:16.223 回答
4

JPA 不允许嵌套提取连接,您应该使用 EclipseLink 查询提示eclipselink.join-fetch请参阅此问题的答案。

于 2013-01-03T10:04:50.293 回答
1

如果我没记错的话,您需要FETCH JOIN在查询中使用语句。

另请参阅:获取连接

于 2013-01-03T09:25:50.730 回答