Hibernate创建条件中是否存在if条件?

Hibernate创建条件中是否存在if条件?,hibernate,groovy,createcriteria,Hibernate,Groovy,Createcriteria,我正在使用HibernateCriteriaBuilderapi编写标准查询。我想知道在条件中是否可以有条件逻辑,比如if语句 例如: OnemonthList=it.createCriteria().list { if (res_id!='all'){ eq('graresource',resourceInstance) } between('currentdate', fromDate, toDate)

我正在使用
HibernateCriteriaBuilder
api编写标准查询。我想知道在
条件中是否可以有条件逻辑,比如
if
语句

例如:

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

这有效吗?

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

 OnemonthList=it.createCriteria().list {   
   if (res_id!='all'){
        eq('graresource',resourceInstance)
   }         
    between('currentdate', fromDate, toDate)         
    projections {       
    trans {
      countDistinct('id')    
    }
    groupProperty('currentdate')
        }                  
    } 
Domain.createCriteria().list {
    params.mapOfConditions.each {
        eq it.key, it.val
    }
}
将为地图中的每个条目动态添加一个
eq