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.
中了解更多关于条件查询的知识
我有两个 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.
中了解更多关于条件查询的知识