我正在使用HibernateCriteriaBuilder
api来编写我的Criteria Queries。我想知道在Criteria
内是否可以有条件逻辑,例如if
语句?
例如:
OnemonthList=it.createCriteria().list {
if (res_id!='all'){
eq('graresource',resourceInstance)
}
between('currentdate', fromDate, toDate)
projections {
trans {
countDistinct('id')
}
groupProperty('currentdate')
}
}
这有效吗?
答案 0 :(得分:10)
是的,您可以在条件DSL中使用任何类型的条件或循环逻辑。你的例子会奏效。使用循环非常有用,例如:
Domain.createCriteria().list {
params.mapOfConditions.each {
eq it.key, it.val
}
}
会为地图中的每个条目动态添加eq
。