Grails:如何结合findAllBy和findAllByTag

Grails:如何结合findAllBy和findAllByTag,grails,tags,findall,Grails,Tags,Findall,由于我不熟悉Grails和动态语言,所以我确实有一些“希望很简单”的问题 我安装了taggable插件,效果很好。有一个带有标记的数组。我用findAllByTag收集每个标记的数据集。在那之后,我随机化它并选择一个条目。效果很好。现在我决定不从数据库中获取所有对象。我只需要具有特定creteria(DB column customerID)的所有内容。这看起来像这样: def customerSet = Customer.findAllBycustomerID(params.customerI

由于我不熟悉Grails和动态语言,所以我确实有一些“希望很简单”的问题

我安装了taggable插件,效果很好。有一个带有标记的数组。我用findAllByTag收集每个标记的数据集。在那之后,我随机化它并选择一个条目。效果很好。现在我决定不从数据库中获取所有对象。我只需要具有特定creteria(DB column customerID)的所有内容。这看起来像这样:

def customerSet = Customer.findAllBycustomerID(params.customerID)
我让两个查询都工作了,但不能按我的要求组合。我试过类似的东西

def hits = customerSet.findAllByTag(tag)
但后来我得到了一份工作

groovy.lang.MissingMethodException:没有方法的签名:java.util.ArrayList.findAllByTag()适用于参数类型:(java.lang.String)值:[mac]

我想我不能在那样的清单上做一个findAllByTag

还是我必须这样做:

def customerSet = Customer.findAllBycustomerID(params.customerID.findAllByTag(tag)) ???
谢谢,
klaas

我不确定这是否适用于标记,但您可以使用具有两个属性的动态查找器,例如findAllByCustomerIdAndTag(customerId,tag)

如果这不起作用,你可以使用一个标准,例如

Customer.createCriteria().list{
    eq('customerId',someCustomerId)
    tags{
        eq('name',someTag')
    }
}

我不确定这是否适用于标记,但您可以使用具有两个属性的动态查找器,例如findAllByCustomerIdAndTag(customerId,tag)

如果这不起作用,你可以使用一个标准,例如

Customer.createCriteria().list{
    eq('customerId',someCustomerId)
    tags{
        eq('name',someTag')
    }
}