如何在使用 jooq 生成的 dao 插入/更新后获取插入/更新的对象

Posted

技术标签:

【中文标题】如何在使用 jooq 生成的 dao 插入/更新后获取插入/更新的对象【英文标题】:how to get inserted/updated object after inserting/updating with jooq generated dao 【发布时间】:2020-11-07 09:35:11 【问题描述】:

我使用 jooq 代码生成工具从我的 postgres 数据库中的 dict_org 表生成了 DictOrgDao。这个 dao 有插入和更新等常用方法,但它们都返回 void。使用 jooq 生成的 dao 插入/更新后,有什么方法可以获取插入/更新的对象?

【问题讨论】:

【参考方案1】:

如果您的 POJO 是可变的,这应该可以开箱即用。以下是Settings 中的相关标志:

Settings.returnRecordToPojo(默认为 true):可变 POJO 应使用生成的密钥自动更新。 Settings.returnIdentityOnUpdatableRecord(默认为true):在INSERT上返回生成的标识值 Settings.returnAllOnUpdatableRecord(默认为false):在INSERTUPDATEMERGE上返回生成的默认值和触发器生成的值

【讨论】:

嗨 Lukas,有没有办法让它适用于不可变的 kotlin 数据类?例如,新的 pojo 被返回了? @NayeemZen:这真的是同一个问题吗?如果您认为有错误,最好问一个新问题或创建一个错误。

以上是关于如何在使用 jooq 生成的 dao 插入/更新后获取插入/更新的对象的主要内容,如果未能解决你的问题,请参考以下文章

在 jooq 中使用 DAO 时出现 DataAccessException

如何使用 JOOQ 在 PostgreSQL 中插入带有 JSON 列的可更新记录?

有没有办法用 JOOQ 生成 DAO,findById 返回 Optional

jOOQ 不生成将 <daos> 标志设置为 true 的 DAO

Jooq 生成视图类

JOOQ DAO 使用事务支持