Grails hasmany 搜索 hasmany 的确切项

Grails hasmany search for exact items of hasmany

我有两个 GORM 域 类。一种是卡,卡上有很多购买的东西。有什么方法可以搜索大于或等于某些购买的卡。这可能是一个例子

我们有 4 张牌:

卡片1:橘子、橘子、苹果 Card2:苹果、橘子 Card3:橙色,橙色 Card4:苹果、苹果、橘子

假设我想搜索所有有 2 个或更多橙子的卡片。所以那只会 return 卡片 1,3。根据购买名称进行搜索。

假设您的域 类 是这样的...

class Card {
    static hasMany = [purchases: Purchase]
}

class Purchase {
    String name
}

你可以这样做:

def cards = Card.withCriteria {
    resultTransformer = org.hibernate.Criteria.DISTINCT_ROOT_ENTITY 

    sizeGe('purchases', 2)

    purchases {
        eq('name', 'orange')
    }
}

您可以使用 sizeGe() 代替子查询,它计算 集合中的项目数 并查找大于或等于该数字的计数假如。

但是,将 eq() 添加到查询中会导致结果因分组而包含重复项。子查询不会有副作用。因此 DISTICT_ROOT_ENTITY 结果转换器在 .

之后过滤掉重复项

你可以从我的文章here.

中了解更多关于条件查询的知识