请建议JOOQ DSL查询布尔表达式的结果
在SQL中我会写:
SELECT sum(apples.quantity) > sum(bananas.quantity)
FROM ...
答案 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();