[英]Using hibernate with annotations, i want a one-many relationship to be sorted
[英]Grails - How to fetch one-many relationship using Criteria
我有两个域类,分别是User和Item,如下所示
class User {
String username;
static hasMany = [wishList: Item]
}
class Item {
String heading;
static belongsTo = [owner: User]
}
我试图在页面中同时显示(用户和他的wishList)详细信息。 现在,如果我使用“ JOIN”(如下所示),则会得到重复的用户行
def users = criteria.list(offset:0, max:10) {
fetchMode("wishList", org.hibernate.FetchMode.JOIN)
}
如果我使用“ SELECT”,如下所示。 发生(n + 1)个SQL查询。
def users = criteria.list(offset:0, max:10) {
fetchMode("wishList", org.hibernate.FetchMode.SELECT)
}
什么是显示此数据的最佳方式(就性能而言)。
对于这种情况,最好的方法是使用join
def users = criteria.list(offset:0, max:10) {
fetchMode("wishList", org.hibernate.FetchMode.JOIN)
}
是的,会有重复的行,但是可以使用唯一方法users.unique()
轻松删除
您可以使用以下实现来防止重复行:
def users = criteria.list(offset:0, max:10) {
fetchMode "wishList", FetchMode.JOIN
resultTransformer Criteria.DISTINCT_ROOT_ENTITY
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.