grails - Grails条件多个hasMans交集

标签 grails gorm

我一直在尝试使用多个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/

相关文章:

grails - Grails发送有关框架异常的电子邮件

grails - grails gorm使用多对多映射创建条件

grails - addTo *不保留更改

hibernate - Grails一对多保存的子代仅刷新父子集

sql - Grails i18n。使用一个SQL select查询域类和翻译

grails - 无法通过命令行运行Grails 2.3.0 M2

grails - 保存新记录时动态发现关系的更好方法? (对方失败)

date - 在grails rich-ui datechooser中将日期字符串转换为日期

grails - Grails命令对象中的可选可空字段

hibernate - 缺少数据源时,如何防止Bootstrap数据迁移运行