2012-01-30 6 views
7

Estoy usando HibernateCriteriaBuilder api para escribir mis consultas de criterios. Quiero saber si dentro de Criteria podemos tener una lógica condicional, como una declaración if?¿Puede haber una condición if dentro de los criterios de Hibernate Create?

Por ejemplo:

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

¿Es esta válida?

Respuesta

10

Sí, puede usar cualquier clase de lógica condicional o de bucle dentro de los criterios DSL. Tu ejemplo funcionará El uso de bucles puede ser muy útil, por ejemplo:

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

dinámicamente agregar un eq para cada entrada en el mapa que tienes.

Cuestiones relacionadas