Hibernate创建标准中是否可以有if条件?

pri*_*dev 7 groovy hibernate createcriteria

我正在使用HibernateCriteriaBuilderapi编写我的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')
        }                  
    } 
Run Code Online (Sandbox Code Playgroud)

这有效吗?

doe*_*eri 10

是的,您可以在DSL标准内使用任何类型的条件或循环逻辑.你的例子会奏效.使用循环非常有用,例如:

Domain.createCriteria().list {
    params.mapOfConditions.each {
        eq it.key, it.val
    }
}
Run Code Online (Sandbox Code Playgroud)

将为eq您拥有的地图中的每个条目动态添加一个.