0

我需要做这样的事情:

结构是:

X 包含 Y 的列表。 Y 包含或不包含 Z 的列表。

Xroot.fetch("Y", JoinType.INNER);
Xroot.fetch("Y.Z", JoinType.LEFT);

但在 JPA 中,最后一行不起作用。任何想法如何做到这一点?

4

2 回答 2

1

您需要在孩子内部获取。

Fetch<X,Y> yFetch = xRoot.fetch("Y", JoinType.INNER); 
yFetch.fetch("Z", JoinType.LEFT);

当然,你也可以流畅地打字

xRoot.fetch("Y", JoinType.INNER).fetch("Z", JoinType.LEFT);

请参阅http://docs.oracle.com/javaee/6/api/javax/persistence/criteria/Fetch.html

于 2012-10-17T15:16:15.520 回答
1

因为 JPA 2.0 规范不需要支持多级提取,所以没有供应商独立的解决方案:

本规范的实现不需要支持多级获取连接。使用多级提取连接的应用程序将不可移植。

根据文档,Hibernate 至少在 HQL 查询中支持多级获取。使用 EclipseLink可以使用eclipselink.left-join-fetch查询提示。

于 2012-10-17T19:02:05.730 回答