2012-01-30 55 views
7

我正在使用HibernateCriteriaBuilder api編寫我的標準查詢。我想知道Criteria裏面是否可以有條件邏輯,比如if聲明?Hibernate創建標準內部是否存在if條件?

例如:

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

這是有效的?

回答

10

是的,您可以在條件DSL中使用任何種類的條件或循環邏輯。你的例子將工作。使用循環可以非常有用的,例如:

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

將動態添加eq對你有地圖的每個條目。