I am using HibernateCriteriaBuilder
api to write my Criteria Queries. I want to know if inside Criteria
we can have conditional logic, such as an if
statement?
For example:
OnemonthList=it.createCriteria().list {
if (res_id!='all'){
eq('graresource',resourceInstance)
}
between('currentdate', fromDate, toDate)
projections {
trans {
countDistinct('id')
}
groupProperty('currentdate')
}
}
Is this valid?
Yes, you can use any sort of conditional or looping logic inside of the criteria DSL. Your example will work. Using loops can be incredibly useful, for example:
Domain.createCriteria().list {
params.mapOfConditions.each {
eq it.key, it.val
}
}
will dynamically add an eq
for each entry in the map that you have.