Java JooQ中的重复键异常
我正在使用JooQ对Aurora MySQL执行CRUD操作 我有以下情况:Java JooQ中的重复键异常,java,mysql,sql,jooq,amazon-aurora,Java,Mysql,Sql,Jooq,Amazon Aurora,我正在使用JooQ对Aurora MySQL执行CRUD操作 我有以下情况: 如果由于重复密钥异常导致插入失败,请再次重试相同的操作,否则忽略异常 如果插入失败,则在满足条件时更新记录 有没有办法只捕获重复的KeyException? JooQ正在将异常作为DataAccessException引发 启用OnDuplicateKeyUpdate时,如果记录存在,它似乎会盲目地更新数据库中的记录。我的用例是,如果数据库中存在记录,那么在满足更新条件的情况下更新记录 我可以在两个单独的Insert和
谢谢 您的问题中有两个问题: 有没有办法只捕获重复的KeyException?JooQ正在将异常作为DataAccessException引发 当然可以。jOOQ没有针对个别错误(如JDBC)的单独异常类型,但它仍然:
- 引用导致异常的JDBC
。您可以通过SQLException
或后者访问它,后者在原始dae.getCause()
被多次包装的情况下非常有用SQLException
- 参考。你要找的是。如果您的JDBC驱动程序在其异常中传播SQL状态类,那么您可以通过jOOQ获得这些信息
上的SET
子句中对更新条件进行编码:
插入t(id,值)
值(1,2)
关于重复密钥更新集
值=案例,当值=2时,则3否则值结束
在上面的示例中,UPDATE
子句仅在2
时才会将value
更新为3
值得指出的是,这个SQL状态类还用于insert上的NOTNULL约束。如果集成测试没有抓住它,我会咬我的。