Hibernate与空List比较?

时间:2013-09-27 19:06:27

标签: java spring hibernate grails hql

我有以下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?

2 个答案:

答案 0 :(得分:2)

在创建查询之前,只需验证列表是否为空。

if (someItemList.isEmpty()) {
   select i from Item    //your query
} else {
   select i from Item
   where i not in :someItemList   //your query here
}

答案 1 :(得分: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] : [:])    

使用GString。