Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JoinFetch什么都不做(EclipseLink)_Java_Jpa_Left Join_Eclipselink - Fatal编程技术网

Java @JoinFetch什么都不做(EclipseLink)

Java @JoinFetch什么都不做(EclipseLink),java,jpa,left-join,eclipselink,Java,Jpa,Left Join,Eclipselink,我有一个实体库,与嵌套的实体有多对一的关系。我想按Nested.name排序查询,其中name可以为null。即使name为null,我也希望查询返回此行。所以我试图让EclipseLink生成将这些表连接在一起的查询,而不是从两个表中进行选择 我用@JoinFetch注释了Base和Nested之间的关系,如下所示: @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "BASE_ID") @JoinFetch(value = Join

我有一个实体库,与嵌套的实体有多对一的关系。我想按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...
我正在使用JPA2.0标准API构建和执行查询。即使我使用CriteriaAPI显式地构建了一个连接查询,结果查询也会像第一个查询一样,没有连接。在构建查询时显式连接在Hibernate中似乎可以正常工作,但对EclipseLink中生成的查询没有影响

我可能缺少一些基本的东西,所以欢迎提供任何提示


谢谢

我认为问题出在您的orderBy中(它没有使用外部连接,因此会使fetch的外部连接无效)


您是如何设置订单的?您正在使用外部联接吗?

基本上代码所做的是
join-join=queryRoot.join(“嵌套”,JoinType.LEFT);query.orderBy(criteriaBuilder.asc(join.get(“name”))问题是,我首先执行了
queryRoot.get(“嵌套”)
,然后执行了
queryRoot.join…
,这显然导致了第一个“get”将连接指定为内部连接。谢谢你给我指明了正确的方向!