Jpa where子句中带子查询的Eclipselink问题

Jpa where子句中带子查询的Eclipselink问题,jpa,subquery,left-join,eclipselink,criteriaquery,Jpa,Subquery,Left Join,Eclipselink,Criteriaquery,我有以下结构:我正在使用eclipselink 2.6.0 @Entity public class A { @Id private double id; ... @OneToMany private List<B> b; @OneToMany(mappedBy = "a") private List<C> c; ... } @Entity public class B { @Id private double id; privat

我有以下结构:我正在使用eclipselink 2.6.0

@Entity
public class A {

@Id
private double id;
... 

@OneToMany
private List<B> b;

@OneToMany(mappedBy = "a")
private List<C> c;

 ...

}

@Entity
public class B {
@Id
private double id;
 
private boolean hidden;
}

@Entity
public class C {
@Id
private double id;

private String label;

private String value;

@ManyToOne
private A a;
}
如您所见,提供者完全忽略左连接,就好像它不存在一样!它不会在两个表A和B之间进行任何连接。。 注意,在JPA JSR中,查询应该是正确的。它还用作命名查询。但我不能在这里使用它,因为我有很多变化的条件

查询应为:

SELECT DISTINCT t1.ID
FROM  A t1 LEFT JOIN B t0 ON t1.ID=t0.A_ID AND t0.creator="currentUserValue"
WHERE (EXISTS (SELECT 1 FROM C t2 WHERE (((t2.A_ID = t1.ID) AND (t2.LABEL = "value1")) AND t2.VALUE LIKE "%value2%"))  AND ((t0.ID IS NULL) OR (t0.HIDDEN = false)))
我试图将eclipseLink更改为2.7.7版本……查询有点改变,但仍然是错误的,a和B之间没有左连接

我非常感谢你对这个问题的帮助

SELECT DISTINCT t1.ID
FROM B t0, A t1 
WHERE (EXISTS (SELECT 1 FROM C t2 WHERE (((t2.A_ID = t1.ID) AND (t2.LABEL = "value1")) AND t2.VALUE LIKE "%value2%"))  AND ((t0.ID IS NULL) OR (t0.HIDDEN = false)))
SELECT DISTINCT t1.ID
FROM  A t1 LEFT JOIN B t0 ON t1.ID=t0.A_ID AND t0.creator="currentUserValue"
WHERE (EXISTS (SELECT 1 FROM C t2 WHERE (((t2.A_ID = t1.ID) AND (t2.LABEL = "value1")) AND t2.VALUE LIKE "%value2%"))  AND ((t0.ID IS NULL) OR (t0.HIDDEN = false)))