使用SelectQuery对象构建嵌套条件

时间:2014-09-17 15:19:11

标签: java sql jooq

我可以使用SelectQuery对象构建嵌套条件吗?

我想得到:

select * 
from car 
where ((car.color = 'blue' or car.model = 'Genesis') 
or (car.manufactor = 'ford' and car.color = 'blue'))

2 个答案:

答案 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)语句链接在一起。