コレクションをパラメーターとして渡したいクエリを作成しています。
List<String> items = new LinkedList();
//adding optional items
Query query = s.getNamedQuery("myQueryName").setParameterList("item", items);
私のクエリは次のようになります。
SELECT i from Item i
//... not important things
WHERE ( i.name in (:item) )
オプションにしたいので、アイテムリストは空になる可能性があります。しかし、空の場合、例外が発生します。
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected end of subtree
だから私は次のようないくつかの機能を使用しようとしました:
SELECT i from Item i
//... not important things
WHERE ( (:item) is null or i.name in (:item) )
SELECT i from Item i
//... not important things
WHERE ( (:item) is empty or i.name in (:item) )
SELECT i from Item i
//... not important things
WHERE ( size(:item)=0 or i.name in (:item) )
しかし、どれも機能していないようです。リストが空でない場合にのみ、この問題を解決し、アイテム名がリストにあるかどうかを確認するにはどうすればよいですか?