2012-09-09 21 views
6

Veritabanına özel kod kullanmadan sadece GORM ile veritabanından rastgele bir nesne almak istiyorum. Şu anda bu kullanıyorumVeritabanından rasgele nesne GORM ile

:

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

Ama mysql en rand() fonksiyonu kullanıyorum çünkü o memnun değilim. Bazı kişiler tüm kimlikleri almayı, ardından rastgele birini seçmeyi ve tüm nesneyi sorgulamayı önerir, ancak iki sorgu istemiyorum.

Bunu yapmak için GORM yolu var mı? Saf GORM değilse, belki de Hazırda bekletme çözümü hile yapardı.

(burada Grails GORM to return random rows from table? bu soruyu gördüm ama :) yardımcı olmuyor)

cevap

5

Önce bir rasgele ofset alabilirsiniz max:1 koymak ve daha sonra bu sayfalandırma parametrelerle istediğiniz veritabanlarını!
(Not: İlk önce tablonuzda bir count() yapmalısınız ama çok maliyetli bir işlem değildir.)

+0

Teşekkürler, bu oldukça iyi bir fikir gibi geliyor. –

+0

Henüz test etmek için zamanım olmadı. Ama cevap olarak seçeceğim :) –