我有两个域类,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)
}
显示此数据的最佳方式(在性能方面)。
答案 0 :(得分:0)
对于这种情况,最好的方法是使用join
def users = criteria.list(offset:0, max:10) {
fetchMode("wishList", org.hibernate.FetchMode.JOIN)
}
是的,会有重复的行,但可以使用独特的方法users.unique()
答案 1 :(得分:0)
您可以使用以下实施来防止重复行:
def users = criteria.list(offset:0, max:10) {
fetchMode "wishList", FetchMode.JOIN
resultTransformer Criteria.DISTINCT_ROOT_ENTITY
}