2011-04-08 16 views
6

¿Cómo puedo obtener algo así como esta consulta MYSQL con createCriteria in grails?Grails createCriteria group por

SELECT * 
     FROM engine4_user_fields_values 
    WHERE field_id = 31 OR field_id = 24 
    GROUP BY item_id; 

Funciona bien si uso algo como esto:

def items = items_c.list{ 
     'in'('fieldId',field_ids) 
     projections{ 
      groupProperty("itemId") 
     } 
    } 

Pero necesito para definir el orden, máximo y ordenar campo de la siguiente manera:

def items = items_c.list(max:5, sort:"itemId", order:"desc"){ 
     'in'('fieldId',field_ids) 
     projections{ 
      groupProperty("itemId") 
     } 
    } 

Pero esto me hace diferente filas con el mismo 'item_id'

¿Qué puedo hacer?

+1

Podría tener sentido considerar el uso de una consulta HQL. ¿Puedes actualizar la pregunta incluyendo los campos de las clases de dominio relevantes para la tabla engine4_user_fields_values? –

+0

¿Qué ocurre si agrega groupProperty ('fieldId') debajo de su primer groupProperty? –

Respuesta

0

Utilice la proyección Agains el primer resultado,

lists= items.createCriteria().list(){ 
    projections { 
    order ("ItemId") 
    } 

    } 

o executeQuery ("aquí su consulta"); con distnict