@JoinFetch不执行任何操作(EclipseLink)

乔纳坦:

我有一个实体Base,与一个嵌套实体有多对一关系。我想通过Nested.name订购查询,其中name可以为null。即使name为null,我也希望查询返回该行。因此,我试图使EclipseLink生成将这些查询一起左联接的查询,而不是从两个表中进行选择。

我已经用@JoinFetch批注注释了Base和Nested之间的关系,如下所示:

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "BASE_ID")
@JoinFetch(value = JoinFetchType.OUTER)
private Nested nested;

但是,这似乎丝毫不影响EclipseLink生成的查询。实际生成的查询是

SELECT ... FROM BASE t0, NESTED t1 WHERE (t1.ID = t0.BASE_ID) ORDER BY t1.NAME ASC...

虽然我希望有类似的东西

SELECT ... FROM BASE t0 LEFT JOIN NESTED t1 ON (t1.ID = t0.BASE_ID) ORDER BY t1.NAME ASC...

我正在使用JPA 2.0 Criteria API来构建和执行查询。即使我使用条件API显式构建联接查询,结果查询也将看起来像第一个没有联接的查询。在构建查询时,显式联接似乎可以与Hibernate一起正常使用,但对EclipseLink中的结果查询没有任何影响。

我可能在这里缺少一些基本知识,因此欢迎您提出任何建议。

谢谢

詹姆士 :

我认为问题出在您的orderBy(未使用外部联接,因此使获取的外部联接无效)的问题。

您如何设置顺序?您是否正在使用外部联接?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章