【问题标题】:Grails groupProperty and order. How it works?Grails 组属性和顺序。这个怎么运作?
【发布时间】:2011-07-10 09:05:03
【问题描述】:

我有这个域名:

class Participation {
   ParticipationStatus status
}
class ParticipationStatus{
   String name
   Date creationDate
}

我创建一个查询:

Participation.createCriteria().list{
   createAlias("status","statusAlias")
   order "statusAlias.creationDate"
   projections{
     groupProperty "id"    
   }
}

但我收到一个错误: 原因:java.sql.SQLException: ORA-00979: N'est pas une expression GROUP BY

我 2 天前正在处理这个查询 grrrrr ! ;-)

非常感谢

【问题讨论】:

    标签: grails grails-orm ora-00979


    【解决方案1】:

    您在聚合查询中使用的每个字段(使用projections 的字段)应该是groupProperty,或者只是一个聚合函数参数(即无论如何都在projections 中)。 在这个例子中,尝试

    Participation.createCriteria().list{
       createAlias("status","statusAlias")
       order "statusAlias.creationDate"
       projections{
         groupProperty "id"    
         groupProperty "statusAlias.creationDate"
       }
    }
    

    【讨论】:

    • 谢谢。我试过这个并且它正在工作,但结果是 [[1,date object], [2, dateobject]] 并且希望只接收 [1,2](仅 ids)
    • 你不能,如果你使用的是group by。分组会破坏记录的原始顺序,因此您可以 order 仅生成结果数据集 - 您需要为此添加日期字段。 OTOH,你需要分组吗?如果id 是Grails 的id,那么无论如何它都是独一无二的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多