我一直在尝试使用多个hasMany对象进行查询,例如:
def product = Product.createCriteria().list {
createAlias("productAttributeValues", "pav")
and {
if (session.filters?.filter_instore) {
and {
eq("pav.attribute", Attribute.findByCode("instore"))
eq("pav.valueDe", session.filters?.filter_instore?.toString())
}
}
if (session.filters?.filter_promo) {
and {
eq("pav.attribute", Attribute.findByCode("promo"))
eq("pav.valueDe", "1")
}
}
}
}
这似乎不起作用,因为尽管我有匹配的测试数据,但我从未得到结果集。看来问题是我用相同的对象查询了两次。
一种可能的解决方案是分别查询productAttributeValues,然后与“in”(“myPavs”,pavs)相交-但这对我而言似乎效率不高。
有什么想法吗?
谢谢。
最佳答案
我将重新构建您的查询,以便:
def products = Product.withCriteria{
productAttributeValues{
or{
if (session.filters?.filter_instore) {
and {
eq("attribute", Attribute.findByCode("instore"))
eq("valueDe", session.filters?.filter_instore?.toString())
}
}
if (session.filters?.filter_promo) {
and {
eq("attribute", Attribute.findByCode("promo"))
eq("valueDe", "1")
}
}
}
}
}
关于grails - Grails条件多个hasMans交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398637/