プレイフレームワークを使用して休止状態に複数の値を結合
-
26-09-2019 - |
質問
私は、プレイフレームワークでビルドクエリにしようとしています私が持っている
select * from Candidate c where (:schools member of c.schools)
私が結合した後、:一つの要素を持つリストで学校を私は何も起こりません複数の要素を持つリストをバインドする場合には、結果を返しますが、
。Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: {vector} [select c from models.Candidate c where (:schools0_, :schools1_ member of c.schools) group by c.id order by RAND()]
実際に私のようなものを必要とする
select * from candidate where schools in (x,x,x,x,x);
候補者と学校との関係は、リンクされたテーブルである。
複数の値をバインドする方法はありますか?
解決
Hibernateで、あなたも直接リスト自体を使用することができます。
select c from Candidate c join c.schools as school where school.id in (:schools)
の種類:。例のList<Int>
やList<Long>
のためのあなたのIDに応じて入力されたパラメータ学校、
他のヒント
問題がどこにある実際に私が見つけた - のののメンバーは、単一の値だけで使用することができ、それが正常に動作します。我々は複数の値を使用する必要がある場合には最高の標準的なSQLを使用することですのでの
select c from Candidate c inner join c.schools as school where school.id in (25980,25981)"
リンクテーブルを結合することが必要である - 。我々は、内側に必要なので、列を指定するには、別名を持つc.schoolsに参加し、c.schools.idを使用することはできません。
//www.javatx:私はすべての初心者が HTTPを確認するべきだと思います。 CN /休止状態/参照/ EN / HTML / queryhql.htmlする
所属していません StackOverflow