2012-01-30 6 views
7

私はHibernateCriteriaBuilder apiを使用してCriteria Queriesを作成しています。私はCriteria内部にifのような条件付きの論理を持つことができるかどうかを知りたいですか?例えばHibernate Create Criteria内に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を追加します。

関連する問題