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方法的等价物是啥?
SQL 方言如何在 hibernate 和 JOOQ 等框架内部实际工作
将 Hibernate @Formula (case) 转换为 JOOQ 字段