我有一個連接表的兩個對象之間的多對多關係。我需要能夠根據父母和日期選擇5個隨機孩子,排除一些兒童記錄。我被卡住了。有任何想法嗎?獲取與namedQuery的多對多關係的隨機記錄
Parent {
static hasMany = [children: Child]
}
Child {
Date dob
static belongsTo = [Parent]
static hasMany = [parents: Parent]
static namedQueries {
randomFiveChildrenBornAfter { parentid, dob, excludeChildren->
qt 'dob', dob
parents {
eq 'id',parentid
}
// not in(excludeChildren) ?? order by rand() ??
}
}
}
感謝特德爲您的答覆。不幸的是,它不是文字和父對象可以有成千上萬的孩子,所以它會花費相當昂貴的做它在內存中...任何方式來使用標準查詢做到這一點? – Micor 2010-06-30 04:58:34
在這種情況下,您必須在數據庫中執行此操作。不幸的是,沒有一個數據庫不可知的獲取隨機行的方式。有關如何編寫HQL條件以獲取具有限制的隨機行的詳細信息,請參閱此stackoverflow後期:http://stackoverflow.com/questions/2810693/hibernate-criteria-api-get-n-random-rows – 2010-07-01 00:35:52
巧妙的技巧sqlRestriction。它必須這樣做。謝謝。 – Micor 2010-07-02 01:07:05