Может ли быть условие if внутри Hibernate Criteria Create? - PullRequest
7 голосов
/ 30 января 2012

Я использую 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 Ответ

10 голосов
/ 30 января 2012

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

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

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

...