我有一个连接表的两个对象之间的多对多关系。我需要能够根据父母和日期选择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