我在JOOQ中有一个查询,它包含一个LEFT OUTER JOIN和另一个表.这是故意的,因为不能保证存在相应的记录,在这种情况下,我仍然希望从前一个表中检索值,并提供缺省字段的缺失字段.
但是,由于getValue()
具有默认参数的函数已被弃用,如何检查该字段是否包含NULL值?
使用字符串很容易,但布尔值只返回false
,意味着我无法检查它是否真的设置为false,或者它正是JOOQ决定返回的内容.
我试过了:
if (record.field(MY_TABLE.SOME_BOOLEAN) != null) {
...
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为field()
函数的返回值不为null,即使字段的值为.我也试过了
if (record.field(MY_TABLE.SOME_BOOLEAN).isNull()){
...
}
Run Code Online (Sandbox Code Playgroud)
但这不是一个有效的Java条件.
提前致谢!
你正在尝试的东西不起作用:
if (record.field(MY_TABLE.SOME_BOOLEAN) != null) { }
Run Code Online (Sandbox Code Playgroud)
Record.field()
将返回Field
参考.我们的想法是您的记录可能尚未创建MY_TABLE
,但它可能仍包含一SOME_BOOLEAN
列,Record.field()
将从SOME_BOOLEAN
记录中返回该列.
您正在寻找的只是:
if (record.get(MY_TABLE.SOME_BOOLEAN) != null) { }
Run Code Online (Sandbox Code Playgroud)
请注意,jOOQ无法区分SOME_BOOLEAN
列是否实际存在NULL
于您的数据库中,或者是否LEFT JOIN
未返回任何行.这就是SQL的工作原理.如果要检查是否LEFT JOIN
实际找到了子行,可以检查列中的null
值NOT NULL
,例如主键:
if (record.get(MY_TABLE.ID) != null) { }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2037 次 |
最近记录: |