4

現在のコード:

CriteriaQuery criteriaQuery = cb.createQuery(MinutisPreke.class);
Root<MinutisPreke> from = criteriaQuery.from(MinutisPreke.class);
Join<LankomumasDiena, MinutisPreke> ld = from.join("lankomumasDiena", JoinType.LEFT);
cb.and(cb.equal(ld.get("intervalas"), 7));

次のクエリを生成します。

SELECT COUNT(t0.pr_id) FROM preke AS t0 
LEFT OUTER JOIN lankomumas AS t1 
ON (t1.pr_id = t0.pr_id) 
WHERE (t1.intervalas = 7)

私のコードがこのクエリを生成するように、条件クエリを使用して LEFT OUTER JOIN ON句にステートメントを追加する方法:

SELECT COUNT(t0.pr_id) FROM preke AS t0 
LEFT OUTER JOIN lankomumas AS t1 
ON (t1.pr_id = t0.pr_id) AND (t1.intervalas = 7)

編集 1: 最初と 2 番目のクエリに違いがない場合は、次のスレッドをお読みください: SQL 結合: where 句と on 句

4

1 に答える 1

2

EclipseLink は、 https ://bugs.eclipse.org/bugs/show_bug.cgi?id=367452 で説明されているように、2.5 ナイトリー ビルドで ON 句のサポートを追加しました が、JPA 仕様の一部ではないため、 Join を EclipseLink の org.eclipse.persistence.internal.jpa.querydef.JoinImpl にキャストします。

((JoinImpl)ld).on(cb.and(cb.equal(ld.get("intervalas"), 7));
于 2013-01-14T13:01:57.640 に答える