2017-01-24 6 views
4

および5.1.xの休止状態、これは私がこの使用条件APIを書くのですかJPQL関連性のない2つのエンティティをJPA基準apiに結合する方法JPA 2.1を使用して

select s.lowerBound, 
l.status 
... 
from Serie s 
left join Line l on 
s.lowerBound between l.lineStart and l.lineEnd 

で可能ですか? 私はこの

Root<Serie> serieRoot = query.from(Serie.class); 
Root<Line> lineRoot query.from(Line.class); 
query.where(criteriaBuilder.between(s.get("lowerBound"), l.get("lineStart"), s.get("lineEnd"))) 

を試みたが、これは私はそれが左結合だ指定することはできません。

答えて

1

Criteriaクエリでは、実際には左結合ではないため、左結合として指定することはできません。クエリには複数のルーツがあり、デカルト積を使用するHibernate documentationによれば、左結合の場合は、一致するものがなければ右側にヌルが得られます。

Form interfaceではエンティティの属性からの結合を作成することしかできないため、達成したいことはCriteria APIで実行できません。データベースに対して2つのクエリを実行するか、JPQLまたはSQLを使用して1つのクエリでそれを実行する必要があります。

+1

基準APIではできません。それぞれのアプローチはJPQLまたは基準APIであり、他のものにはいくつかの特徴がありません。それはイライラしている – kfc

関連する問題