当前位置: 首页 > 知识库问答 >
问题:

JOOQ检查记录对象中的空字段?

明越
2023-03-14

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

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

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

我试过:

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

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

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

但这不是一个有效的Java条件。

提前感谢!

共有1个答案

权胜泫
2023-03-14

你所尝试的不会奏效:

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的工作原理。如果要检查左连接是否实际找到了子行,可以在非空列中检查null值,例如主键:

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

 类似资料:
  • 超文本传输协议GET方法的响应如下所示: 在前端,我想检查属性是否为空。我尝试过这种方法,但不起作用

  • 我有几个JOOQ存储库,它们从Postgres数据库获取数据,并将数据作为值对象提供。我使用JOOQ 3.10.7和一切工作正常。我已经将我的Spring启动版本从2.0.3升级到2.1.4,这将JOOQ版本升级到3.11.10。在映射Jooq记录时,我开始获取NullPointerExcema。 在上述场景中,当没有与给定条件(user.id.eq(1))匹配的记录时,fetchSingle必须

  • 有了jOOQ惊人的多集算子,我们能够查询嵌套列表并将其映射到pojo对象。现在,我试图找到一种方法来同时映射单个嵌套对象。例如,我有一个组合的自定义pojo类,如: 我想在一个步骤中查询并获取它。因此,我目前的工作解决方案是: 这包括一个预初始化的字段列表,其目的是以某种方式告诉JOOQ从“教师”映射教师对象。*”列。 我现在想知道在这方面是否有更直观的解决方案。我曾尝试使用row运算符,但到目前

  • 这非常慢,并且refmdlist._id没有索引。解决方案是索引这个数组对象字段以加快速度,还是上面的DBCursor代码有问题? DBCursor类来自mongodb/mongo-java-driver/3.4.3/mongo-java-driver-3.4.3.jar

  • 通常,我可以看到如下代码结构: 我想知道是否有任何广泛使用的库(Google、Apache等)可以同时检查多个对象的空性,例如: 或 更新: > 我完全知道怎么自己写 我知道这可能是程序结构不佳的结果,但在这里不是个案 让我们使它更具挑战性,并用这样的内容替换原始示例: 更新2: 我已经为Apache Commons Lang库创建了一个pull请求,以修复这个漏洞: 问题:https://iss

  • Jooq生成器是否支持扩展提供给生成器的自定义类? 我想生成扩展自定义提供类的记录,该类将扩展TableRecordImpl。 我想进入继承链,其中UpdateableRecordImpl将扩展MyRecord,MyRecord将扩展TableRecordImpl?