2012-09-09 19 views
6

データベース固有のコードを使用せずに、GORMを使用してデータベースからランダムオブジェクトを取得したいとします。現在、私はこれを使用していGORMを使用したデータベースのランダムオブジェクト

Tag.executeQuery("from Tag order by rand()", [max: Tag.count()]) 

しかし、私はMySQLのランド()関数を使用していますので、私はそれに満足していませんよ。いくつかの人々は、すべてのIDを取得し、次にランダムなものを選んでオブジェクト全体を照会することを推奨しますが、2つの照会は必要ありません。

これを行うにはGORM方法がありますか?純粋なGORMでなければ、おそらくHibernateの解決策がこのトリックを行うでしょう。

は(:)私はGrails GORM to return random rows from table?ここにこの質問を見てきましたが、それは解決しない)

答えて

5

あなたが最初のランダムオフセットを取得することができ、これらのページネーションのパラメータを使用してクエリを実行しmax:1を入れて!
(注:最初にテーブルにcount()を実行する必要がありますが、非常にコストのかかる操作ではありません)。

+0

ありがとうございます。 –

+0

私はまだそれをテストする時間がありませんでした。しかし、私は答えとしてそれを選択します:) –

関連する問題