是否可以仅在特定查询中急切地获取实体层次结构中的所有集合?
例如,
实体部门有一个实体员工列表。 员工有一个实体地址列表和一个实体凭据列表。的系 还有另一个实体项目列表。
我想急切地在特定查询SELECT dept FROM Department dept
中获取所有这些集合(在我的实际情况中有更多集合),而不是在其他情况下(因此无法使用FetchType.EAGER进行注释)。有可能吗?
我正在使用Eclipselink。
提前致谢。
答案 0 :(得分:6)
您可以使用联接提取,批量提取或加载组。
我建议批量抓取连接提取,因为它会在多个集合中表现得更好。
请参阅,
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
答案 1 :(得分:4)
JPA不允许嵌套提取连接,您应该使用EclipseLink查询提示eclipselink.join-fetch
。请参阅this question的答案。
答案 2 :(得分:1)
如果我没记错,您需要在查询中使用FETCH JOIN
语句。
另请参阅:Fetch Joins