我有User
类,它具有一个字段type
,该字段又是一个列表。
因此type
可能类似于:["a","b"]
我还有另一个列表,像search
这样说["c","b"]
(这是预定义的)
现在,我想要搜索的是我的User
实例中的所有 ,以便可以找到与type
中的任何元素匹配的用户search
。
我提出了部分解决方案:def newQ = User.findAllByUsernameIsNotNull()
newQ.each { eachIndex ->
query = eachIndex.type
result = query.findAll { it == "c" }
if(result.size() > 0 )
{
ans << eachIndex.username
}
}
上面的代码有效,ans
列表中所有满足我条件的User
。但是您可以清楚地看到,在query.findAll
行中,我只搜索search
中的一个元素。我想针对search
(这是query
的User
字段)对所有type
元素执行搜索操作。
我该如何实现?除了我的解决方案之外,还有什么简单的方法可以做到这一点?
提前致谢。
最佳答案
您可以执行以下操作:
def ans = []
search.each{s->
ans += User.findAll("from User u where u.username is not null and ? in elements(u.type)",[s])
}
我想不出一种方法可以在单个查询中
关于grails - 如何以Groovier方式查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752635/