2016-12-08 6 views
1

私は異なるIDとその名前のリストを持っています。 id[0]の場合、一致する必要があるname[0]があります。クエリにHQLを使用してペアが存在するかどうかを確認する方法は?

  • IDのリスト、名前のl{1,2,3,4};
  • リスト、n{a,b,c,d};

は今、私は上記の組み合わせの両方のための完全な一致を取得したい場合は、結果を得るためにHQLでどのような方法があるとします?私のようなクエリの代替を見つけるために探しています

select any_column 
from table_name 
where (id,name) IN {(id[0],name[0]), (id[1], name[1]),...}; 

任意の提案:

select any_column 
from table_name 
where (id[0]=1 and name[0]=a) or (id[1]=2 and name[1]=b and so on...); 

HQLクエリは以下のようなものでなければなりませんか?

答えて

0

私はhql/sqlの人ではありませんが、あなたのhqlでは、idと名前をスペース(または他の特殊な文字)と連結してからinサブセクションにすることが考えられます。以下のようなもの:

select * from table where concat(id, ' ', name) in (:pairList) 

pairListパラメータを使用すると、要素id[x] + " " + name[x]を持ってHQLクエリの呼び出し、前に準備する必要があり、Javaのコレクションです。

これはうまくいくと思います。

@Formula(value = " concat(id, ' ', name) ") 
private String idNamePair; 

次にあなたがHQLでそれを使用することができます:あなたは休止状態を使用している場合

、別の可能な解決策がある、など、計算列を作成するために、あなたのtableエンティティでHibernateの@Formular注釈を利用します通常のフィールドとして。 like ... from table where idNamePair in (:paramList)

関連する問題