我可以使用SelectQuery
对象构建嵌套条件吗?
我想得到:
select *
from car
where ((car.color = 'blue' or car.model = 'Genesis')
or (car.manufactor = 'ford' and car.color = 'blue'))
答案 0 :(得分:2)
...然后你就可以将它们提供给你的SelectQuery
对象:
SelectQuery query = ...
query.addConditions( ( CAR.COLOR.eq("blue") .or ( CAR.MODEL.eq("Genesis") ) )
.or ( CAR.MANUFACTOR.eq("ford") .and ( CAR.COLOR.eq("blue") ) ) )
我添加了一些空格以提高可读性
...然后您可以通过各个步骤创建谓词:
Condition condition;
condition = CAR.COLOR.eq("blue");
condition = condition.or(CAR.MODEL.eq("Genesis"));
condition = condition.or(CAR.MANUFACTOR.eq("ford").and(CAR.COLOR.eq("blue")));
这两种方法完全相同。
答案 1 :(得分:1)
我现在正在查看documentation,看起来您可以使用addConditions方法和OR operator来完成嵌套查询。
使用addConditions有4种不同的重载方法,但最后两种方法允许您提供运算符(在您的情况下为OR),其中一种允许您使用提供的运算符将多个条件串在一起。
所以你需要做的就是将嵌套语句拆分为不同的条件,然后将它们与addConditions([Collection of Conditions], OR)
语句链接在一起。