如何在选择查询中使用jOOQ的row()方法处理映射中的空值?

问题描述 投票:0回答:1

我正在使用 jOOQ 进行数据库查询,并且我遇到了这样的情况:我在

row()
查询中使用
select
方法映射字段,如下所示:

.select(
    // Other fields...
    .row(MyRecord).mapping(MyMapper::toDto)
    // Other fields...
)

但是,由于我的查询中存在左连接,

MyRecord
对象的所有字段有时可能为空。如果左侧部分为 null,是否有办法避免映射,而只是为字段返回 null?

我知道我可以在映射器中使用 lambda 函数而不是方法引用,但我想知道是否有更方便的方法来处理这种情况。对于使用 jOOQ 选择查询中的

row()
方法处理映射中的空值的任何建议或最佳实践,我们将不胜感激。

也许有像

row(MyRecord, Predicate)
这样的方法,如果谓词为假,它可以返回null?或者其他干净的方法来避免在空值的情况下映射。

谢谢你。

java orm jooq
1个回答
0
投票

您可以在这种情况下使用一个实用程序:

Functions::nullOnAllNull
。具体来说:

.row(...).mapping(nullOnAllNull(MyMapper::toDto))
© www.soinside.com 2019 - 2024. All rights reserved.