我有两个GORM域类。一张是卡,卡上有许多购物。有什么方法可以搜索大于或等于某些购买的卡片。这可能是一个例子
我们有4张卡:
卡片1:橙色,橙色,苹果 Card2:苹果,橘子 卡3:橙色,橙色 Card4:苹果,苹果,橙色
让我们说我想搜索所有有2个或更多橙子的牌。这样只返回卡1,3。根据购买名称进行搜索。
答案 0 :(得分:0)
假设您的域类是这样的......
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了解有关条件查询的详情。