0

次の Hibernate HQL クエリがあります。

 def query = 
 """
select i from Item
where i not in :someItemList
 """

 def items = Item.executeQuery(query, [someItemList: someItemList])

私のクエリでは、 someItemList は Item オブジェクトのリストです。someItemList が空でない場合、このクエリは正常に機能します。リストが空の場合、Hibernate は例外を発生させます。

空の someItemList でも機能するようにこのクエリを変更する方法はありますか?

4

2 に答える 2

2
def someItemList = ['Example'] //empty in cases    

def query = 
 """
select i from Item ${someItemList ? ' where i not in (:someItemList)' : ''}
 """

def items = someItemList ? Item.executeQuery(query, [someItemList: someItemList])
                         : Item.executeQuery(query)

//or try
def items = Item.executeQuery(query, 
                            someItemList ? [someItemList:someItemList] : [:])    

Gストリングの使用。

于 2013-09-27T20:33:58.907 に答える
2

クエリを作成する前に、リストが空かどうかを確認してください。

if (someItemList.isEmpty()) {
   select i from Item    //your query
} else {
   select i from Item
   where i not in :someItemList   //your query here
}
于 2013-09-27T19:18:44.560 に答える