gpt4 book ai didi

grails - 在Grails条件中的列组之间使用OR运算符

转载 作者:行者123 更新时间:2023-12-02 14:39:38 25 4
gpt4 key购买 nike

我有一个代码,可从groovy代码中使用Grails条件查询数据库。
以下仅是在标准中添加where子句/条件的测试代码的一部分。

for (Map.Entry<String, String> entry : searchMap.entrySet()) {
String name = entry.getKey();
String city = entry.getValue();
eq("user.name", name)
eq("user.city", city)
}

我希望生成的 WHERE子句看起来像,
    WHERE ( user.name = ? and user.city = ?) 
OR ( user.name = ? and user.city = ?)
OR ( user.name = ? and user.city = ?)
.......

但是我的代码总是以这种格式生成 WHERE子句,
WHERE ( user.name = ? and user.city = ?) 
AND ( user.name = ? and user.city = ?)
AND ( user.name = ? and user.city = ?)
.......

基本上,我想要名称,城市列组之间的 OR而不是 AND
我尝试了类似的解决方案,
    or {
eq("user.name", name)
eq("user.city", city)
}

or {
and {
eq("user.name", name)
eq("user.city", city)
}
}

但是没有什么可以用 AND代替 OR
我该如何实现。

编辑
与,
or {
eq("user.name", name)
eq("user.city", city)
}
WHERE子句生成为
WHERE ( user.name = ? and user.city = ?) 
AND ( user.name = ? OR user.city = ?)
AND ( user.name = ? OR user.city = ?)
.......

这与我所需要的完全相反。

最佳答案

希望这会为您解决。您必须明确提及and块。

def xx = Risk.createCriteria().list{
or{
and{
eq 'isAccpeted', true
eq 'isValid', true
}
and{
eq 'investigationStarted', false
eq 'isValid', true
}
}
}

输出
where ((this_.is_accpeted=? and this_.is_valid=?) or (this_.investigation_started=? and this_.is_valid=?))

作为您的代码
or {
and {
eq("user.name", name)
eq("user.city", city)
}
and {
eq("user.name", name)
eq("user.city", city)
}
}

关于grails - 在Grails条件中的列组之间使用OR运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com