apache / apache/grails-core

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

オープン
#14,653 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
relates-to: gorm
主要言語
Groovy
スター
2.9k
フォーク
975
平均マージ
1日 22時間
マージ済み PR(30日)
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 が、示されている順序で複数の sort プロパティを受け入れれば完了です。

索引モデルが issue の本文から書いたものです。

評価

領域
databases
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。