Может ли быть условие if внутри Hibernate Criteria Create?

Я использую HibernateCriteriaBuilder API для написания моих критериев запросов. Я хочу знать, если внутри Criteria мы можем иметь условную логику, такую ​​как if заявление?

Например:

 OnemonthList=it.createCriteria().list {   
   if (res_id!='all'){
        eq('graresource',resourceInstance)
   }         
    between('currentdate', fromDate, toDate)         
    projections {       
    trans {
      countDistinct('id')    
    }
    groupProperty('currentdate')
        }                  
    } 

Это действительно?

1 ответ

Решение

Да, вы можете использовать любой вид условной или циклической логики внутри критериев DSL. Ваш пример будет работать. Использование циклов может быть невероятно полезным, например:

Domain.createCriteria().list {
    params.mapOfConditions.each {
        eq it.key, it.val
    }
}

будет динамически добавлять eq за каждую запись на карте, которая у вас есть.

Другие вопросы по тегам