以下不适用于搜索多个标记:
def tags = "1,2,3".split(",")
def results = Item.createCriteria().list() {
itemTags {
and {
tags.each { tag ->
like("name", tag)
}
}
}
}
但如果我将和更改为或,它似乎确实有效。
编辑:在我的调试中,我发现了以下标准:
(itemTags_alias1.name=1 and itemTags_alias1.name=2 and itemTags_alias1.name=3)
这不是我想要实现的目标。我想检查项目是否包含所有三个标签。
答案 0 :(得分:0)
我不知道你是否可以对这种情况有一个标准,但你应该能够编写类似于下面的hql
Item.executeQuery("select i from Item i join i.itemTags tags where tags.name in (:names) group by i having count(i) >= :count", [names:nameList, count: nameList.size()])
请参阅此question - 您将了解如何在sql中完成此操作,因此您可以将其转换为hql
注意:上面的hql查询未经测试但会给你一些想法