Grails createCriteria按组分组

6
我该如何在Grails中使用createCriteria获取类似于这个MYSQL查询的结果?
    SELECT * 
      FROM engine4_user_fields_values
     WHERE field_id = 31 OR field_id = 24 
  GROUP BY item_id;

如果我使用类似这样的方式,它可以正常工作:

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

但是我需要像这样定义顺序、最大值和排序字段:

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

但是这样会得到具有相同“item_id”的不同行。

我应该怎么做?


1
考虑使用HQL查询可能是有意义的。您能否更新问题,包括与engine4_user_fields_values表相关的域类字段? - Jon Cram
如果在第一个groupProperty下面添加groupProperty('fieldId')会发生什么? - Jonathan Lebrun
2个回答

3

是的,但这似乎不是这里的要求? - anders.norgaard

0

再次使用投影到第一个结果上,

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

  }

或者使用 executeQuery("你的查询语句"); 带有 distinct 关键字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接