JOOQ查询布尔表达式的结果

时间:2016-01-24 11:00:50

标签: java sql jooq

请建议JOOQ DSL查询布尔表达式的结果
在SQL中我会写:

SELECT sum(apples.quantity) > sum(bananas.quantity)
FROM ...

1 个答案:

答案 0 :(得分:4)

为了获得总和比较的jOOQ Condition,只需写下:

Condition condition = sum(apples.quantity).gt(sum(bananas.quantity));

现在,Condition类型目前无法放入jOOQ中的SELECT子句中,但您可以使用DSL.field(Condition)包装它们:

Field<Boolean> field = field(sum(apples.quantity).gt(sum(bananas.quantity)));

jOOQ将负责决定您的SQL方言是否允许将谓词用作列表达式(例如MySQL,PostgreSQL,SQLite),或者是否需要使用等效的CASE表达式来模拟它(例如DB2,HANA ,Oracle,SQL Server)。

导致:

Record1<Boolean> result =
DSL.using(configuration)
   .select(field(sum(apples.quantity).gt(sum(bananas.quantity))))
   .from(...)
   .fetchOne();