Order by more than one property in criteria builder's params
- 主要言語
- 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