我有一个域类,如下所示:
class Blog {
String name
Set tags = []
static constraints = {}
static hasMany = [tags: String]
}
我有一个搜索例程,我希望能够根据名称和标签集合进行过滤。
def results = Blog.createCriteria().list(params) {
def query = params.query?.trim()
if(query) {
or {
like("name", "%${query}%")
like("tags", "%${query}%") <--- This does not work...
}
}
}
在 SQL 中,我将使用针对标签表的 WHERE IN 子查询来实现这一点,并根据父表进行过滤。但是,我一直无法找到在 Grails 中使用 CreateCriteria 构建器执行此操作的方法。
如果可能的话,有人可以提供我的见解吗?
如果可能的话,我宁愿不必在 HSQL 中实现这一点,但愿意就如何实现这一点提出建议......
我已经考虑了这些方面的一些事情:
from Blog as b
where b.name like '%:query%' or b.id in ( select ... from tags where .... )
但我不确定为标记表名称指定什么,因为它不是域类,只是一个字符串列表。
谢谢!