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