2012-09-09 5 views
6

Ich möchte ein zufälliges Objekt aus der Datenbank nur mit GORM, ohne Verwendung von Datenbank-spezifischen Code.Zufälliges Objekt aus der Datenbank mit GORM

Derzeit ist dieses Ich verwende:

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

Aber ich bin nicht zufrieden damit, weil ich die MySQL-rand() Funktion. Einige Leute empfehlen, alle IDs zu erhalten, dann eine zufällige auszuwählen und dann nach dem gesamten Objekt abzufragen, aber ich möchte keine zwei Abfragen.

Gibt es einen GORM-Weg, dies zu tun? Wenn nicht reines GORM, dann würde vielleicht die Hibernate-Lösung ausreichen.

(ich diese Frage Grails GORM to return random rows from table? hier gesehen habe, aber es hilft nicht :))

Antwort

5

Sie zuerst eine zufällige Offset zu bekommen, setzen max:1 und dann Abfrage mit diesen Paginierung Parameter ausführen!
(Hinweis: Sie müssen zuerst eine count() auf Ihrem Tisch tun, aber es ist nicht eine sehr teure Operation.)

+0

Danke, das klingt wie eine ziemlich gute Idee. –

+0

Ich hatte noch keine Zeit es zu testen. Aber ich werde es als Antwort wählen :) –

Verwandte Themen