apache / apache/grails-core

Order by more than one property in criteria builder's params

未关闭
#14,653 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
relates-to: gorm
主要语言
Groovy
星标
2.9k
派生
975
平均合并
1 天 22 小时
30 天内合并 PR
92

描述

Sort parmeter in param map for Criteria builder doesn't work the same way as in Dynamic Finders. In dynamic finder we could do this:

```
Author.findAllByNameLike("A%", [sort: [name: "desc", id: "asc"]])
```

If we try to do the same for Criteria builder or with Detached Criteria:

```
Author.createCriteria().list(sort: [name: "desc", id: "asc"]) {
like 'name', "A%"
}
```

The ClassCastException will be thrown:

```
java.util.LinkedHashMap cannot be cast to java.lang.String. Stacktrace follows:
Message: java.util.LinkedHashMap cannot be cast to java.lang.String
Line | Method
->> 1615 | invokeMethod in org.grails.orm.hibernate.query.AbstractHibernateCriteriaBuilder
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
```

贡献指南

打开贡献指南

调研方向

从 org.grails.orm.hibernate.query.AbstractHibernateCriteriaBuilder 的第 1615 行开始,使用 issue 中的 Criteria builder 示例重现 ClassCastException。将参数处理与 Dynamic Finder 的行为进行比较;当 Criteria 和 Detached Criteria 能够按所示顺序接受多个排序属性时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

领域
databases
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。