【问题标题】:Grails createCriteria group byGrails createCriteria group by
【发布时间】:2011-04-08 17:05:28
【问题描述】:

如何在 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")
        }
    }

但我需要像这样定义 order、max 和 sort 字段:

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

但这会让我得到具有相同“item_id”的不同行

我能做什么?

【问题讨论】:

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

标签: grails


【解决方案1】:

【讨论】:

  • 是的,但这似乎不是这里的要求?
【解决方案2】:

对第一个结果使用投影,

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

  }

或executeQuery("你的查询");有区别的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多