jooq中hibernate的saveOrUpdate方法的等价物是啥?

Posted

技术标签:

【中文标题】jooq中hibernate的saveOrUpdate方法的等价物是啥?【英文标题】:What is the equivalent of hibernate's saveOrUpdate method in jooq?jooq中hibernate的saveOrUpdate方法的等价物是什么? 【发布时间】:2019-08-23 13:08:12 【问题描述】:

如果存在,我想更新行,否则插入它。 jooq中是否有类似hibernate的saveOrUpdate之类的便捷方法?

目前我正在检查数据库是否存在,然后运行更新查询,否则插入它。

【问题讨论】:

【参考方案1】:

您可以使用 jOOQ 支持的不同 UPSERT 语句之一,具体取决于您的 RDBMS:

INSERT .. ON DUPLICATE KEY UPDATE mysql 原生支持。可以使用以下两个选项来模拟它 INSERT .. ON CONFLICT DO UPDATE 由 PostgreSQL 原生支持。可以使用以下选项进行模拟 MERGE 被许多 RDBMS 和 SQL 标准原生支持

【讨论】:

感谢@Lukas 的回答。它按预期工作。我必须说 Jooq 很棒。 @avisek1269:谢谢你的好话! :)【参考方案2】:

From this Stack Overflow answer here

如果您从数据库中读取 record 并调用 record.store(),您将 具有与休眠 saveOrUpdate 方法相同的行为,它的作品 完美!

但在大多数情况下,您不会从 数据库,您将收到来自控制器或视图的记录 例如,在这种情况下,方法 record.store() 不会更新

【讨论】:

以上是关于jooq中hibernate的saveOrUpdate方法的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

jooq中hibernate的saveOrUpdate方法的等价物是啥?

JOOQ 与休眠 [关闭]

SQL 方言如何在 hibernate 和 JOOQ 等框架内部实际工作

将 Hibernate @Formula (case) 转换为 JOOQ 字段

如何使用 jOOQ fetchInto() 映射到现有的 Hibernate 模型?

JPA / Hibernate可以与其他持久性框架(如jOOQ)结合使用