0

私はドメインクラスを持っており、さまざまなアルゴリズム(人気など)に基づいてオブジェクトにスコアを与えるいくつかのメソッドを定義しました。

ここで、これらのスコアの1つでソートされたこれらのオブジェクトのリストを取得したいと思います(たとえば、人気スコアの降順)。

GORMを使用する方法はありますか?

クラスの例:

class SomeObject {
    String title

    Integer popularity() {
        //some algorithm
        return popularity
    }
}
4

2 に答える 2

0

私が考えることができる3つの解決策があります。データセットが小さいと仮定すると、リスト全体を返してから並べ替えることができます。例えば

objectList.sort{popularity()}

次のリンクに基づいて注意してください。http://jlorenzen.blogspot.com/2008/05/groovy-sort-list.html

計算式が単純な場合は、デフォルトのfind byメソッドの代わりに、いつでもHQLクエリを使用できます。HQLは、Gormが構築されているHibernateオブジェクトで機能するSQLに似たクエリ言語です。詳細については、次のリンクを参照してください。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html 計算フィールドをリアルタイムで更新する必要がなく、HQLの計算が複雑になる場合は、計算結果を1時間程度ごとに更新するジョブをスケジュールし、生成された結果をドメインクラスのフィールドに保存できます。Grailsのジョブスケジューリングの詳細については、次のリンクを参照してください。 http://grails.org/Job+Scheduling+%28Quartz%29

于 2009-11-12T18:18:13.163 に答える
0

ジャレドとあなたは正しい。これは計算値であり、DBに保存されていないため、GORMにはそれについて何も知る方法がありません。あなたが言うように行い、値の新しい列を作成し、必要に応じてそれを更新する場合は、SomeObject.list(order:'desc', sort: 'popularity', max:10)構文を使用できます。

于 2009-11-13T00:38:10.103 に答える