Can there be an if condition inside the Hibernate Create Criteria?
Asked Answered
P

1

7

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?

Poynter answered 30/1, 2012 at 2:28 Comment(0)
B
10

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.

Ballyrag answered 30/1, 2012 at 4:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.