我有一个带有布尔列b的表t。
db.select(T.B).from(T).where(T.B.isTrue()).fetch();
db.select(T.B).from(T).where(T.B.eq(Boolean.TRUE)).fetch();
这两个语句都转换为相同的sql查询:
select "public"."T"."B" from "public"."T" where "public"."T"."B" = true;
,这不起作用,因为对于布尔比较而言,必须使用keywoard“ is”:
select "public"."T"."B" from "public"."T" where "public"."T"."B" is true;
有没有办法正确地写这个?
答案 0 :(得分:0)
jOOQ当前不支持SQL <boolean test>
表达式(即x IS [ NOT ] <truth value>
)
但是,在“ true”情况下,这实际上并不是必需的。您可以将列直接传递给where子句:
where(T.B)
...具有相同的效果。要获取反谓词,您可以编写
where(not(T.B))
如果您要进行空安全比较,则也可以使用Field.isNotDistinctFrom()
或Field.isDistinctFrom()
where(T.B.isNotDistinctFrom(true))
where(T.B.isDistinctFrom(true))