java - JOOQ 检查 Record 对象中的空字段?

标签 java sql jooq

我在 JOOQ 中有一个查询,其中包含与另一个表的 LEFT OUTER JOIN。这是有意为之的,因为不能保证相应的记录会存在,在这种情况下我仍然想从以前的表中检索值,并为缺少的字段提供默认值。

但是,由于 getValue()带有默认参数的函数已被弃用,我如何检查该字段是否包含 NULL 值?

使用字符串很简单,但是 boolean 值只返回为 false ,这意味着我无法检查它是否真的设置为 false,或者这只是 JOOQ 决定返回的内容。

我试过:

if (record.field(MY_TABLE.SOME_BOOLEAN) != null) {
    ...
}

但这不起作用,因为 field() 的返回值函数不为空,即使字段的值为空。我也试过

if (record.field(MY_TABLE.SOME_BOOLEAN).isNull()){
   ...
}

但这不是有效的 Java 条件。

提前致谢!

最佳答案

你正在尝试的是行不通的:

if (record.field(MY_TABLE.SOME_BOOLEAN) != null) {  }

Record.field() 将返回一个 Field 引用。这个想法是你的记录可能不是从 MY_TABLE 创建的,但它可能仍然包含一个 SOME_BOOLEAN 列,Record.field() 将从记录中返回 SOME_BOOLEAN 列。

您正在寻找的只是:

if (record.get(MY_TABLE.SOME_BOOLEAN) != null) {  }

请注意,jOOQ 无法区分 SOME_BOOLEAN 列在您的数据库中是否实际上是 NULL,或者如果 LEFT JOIN 没有返回任何行。这就是 SQL 的工作原理。如果您想检查您的 LEFT JOIN 是否真的找到了子行,您可以检查 NOT NULL 列中的 null 值,例如作为主键:

if (record.get(MY_TABLE.ID) != null) {  }

关于java - JOOQ 检查 Record 对象中的空字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41062735/

相关文章:

sql - concatrelated vba excel的使用

PostgreSQL 函数 + 在 jOOQ 中转换

java - 斯坦福解析器 - 用金融工具标记

java - 警报对话框 : a string is not converting to bold text

JAVA PHP加密解密

c# - 使用 SMO 检索 SQL Server、数据库、表信息

php - laravel 中的 groupBy 与 Eloquent 关系

java - JOOQ 中的 POJO 映射与参数顺序无关

java - 如何使用 JOOQ 在 FROM 子查询中添加 jsonb 函数

Java-WebKit : EventSource object can not be created?