41

姓と名など、2 つのフィールドで並べ替えられたリストを取得する方法はありますか?

私は知っていて.listOrderByLastAndFirst.list(sort:'last, first')うまくいきません。

4

10 に答える 10

83

Hates_基準の回答は、私にとってはうまくいかなかったようです。順番"last,first"に並べると、例外が発生するだけ"Property 'last,first' not found"です。2 つのフィールドで注文するには、次の操作を実行できます。

def c = MyDomain.createCriteria()
def results = c.list {
    and{
       order('last','desc')
       order('first','desc')
    }
}
于 2009-10-27T21:12:18.677 に答える
10

これはかなり古いですが、適切な解決策を見つけるのに役立ちました。withCriteria ショートカットを使用した「よりクリーンな」コード例:

def c = MyDomain.withCriteria {
    and {
        order('last', 'desc')
        order('first', 'desc')
    }
}
于 2011-09-02T00:45:44.340 に答える
8

この古いソリューションは機能しなくなりました。以下のmattlaryの回答をご覧ください

HQL でカスタム ファインダーを作成するか、Criteria Builder を使用する必要がある場合があります。

MyDomain.find("from Domain as d order by last,first desc")

または

def c = MyDomain.createCriteria()
def results = c.list {
       order("last,first", "desc")
}
于 2008-11-28T16:17:52.873 に答える
5

より複雑な順序付け基準 (Grails 2.1.0 でテスト済み)

def c = MyDomain.withCriteria {
    property {
        order('last', 'desc')
    }
    order('first', 'desc')
}

最初に MyDomain.property.last で並べ替え、次に MyDomain.first で並べ替えます

于 2012-09-12T12:37:57.490 に答える
4

基準が最善の策だと思いますが、最初にファインダーを試すことで正しいことをしました。GORMからドメインオブジェクトを取得する場合、試行する正しい順序は、動的ファインダー、基準、HQLです。

于 2008-11-30T13:33:21.830 に答える
4

このクエリは、最初のフィールドに基づいて機能しています。最初のフィールドが空白の場合、2 番目のフィールドによってショートされます。

order('last','desc')
order('first','desc')
于 2009-11-04T05:06:04.733 に答える
0

アイテムの内容に基づいてリストを並べ替える場合は、複数のプロパティに基づいて並べ替え順序を決定できるスマートなコンパレータを実装する必要があります。

Groovy スタイルのコンパレーターの例をいくつかここに示します

ただし、並べ替えているリストがデータベース クエリから返されている場合は、CrteriaQuery を使用して並べ替え、その上で並べ替える方がよいでしょう。

于 2008-11-28T16:17:18.960 に答える