たとえば、次の 2 つのドメイン クラスがあるとします。
class Foo {
Bar bar
Long baz
}
class Bar {
String name
}
createCriteria
そして、ケースを無視して、Bar の名前 (またはクライアントが並べ替えたいその他の有効なプロパティ) で並べ替えたい呼び出しがあります。私はそれを次のように減らすことができました:
Foo.createCriteria().list() {
//...
bar {
order((params.sortOrder == 'asc' ?
Order.asc('name') : // 'name' is a variable in the real code
Order.desc('name')
).ignoreCase())
}
}
ただし、並べ替えプロパティがネストされている場合 (つまり、のプロパティbar
)、例外が発生します。
org.hibernate.QueryException: could not resolve property: name of: Foo
これらの関連する Grails バグGRAILS-8182、GRAILS-9171、GRAILS-3911を見つけたので、やりたいことを不可能にするバグの組み合わせがあるように見えます。
のネストされたプロパティで大文字と小文字を区別しない並べ替えを行う方法はありcreateCriteria
ますか? クライアントまたはGroovyリストでソートできることはわかっていますが、車輪を再発明する必要はありません(特に、それは本当に醜い車輪になるため)。
Grails 2.2.4 を使用しています。