I get a org.jooq.exception.DataAccessException in Java 并附有一条消息
错误:由于事务之间的读/写依赖关系,无法序列化访问 详细信息:原因代码:在检查冲突期间,在标识为枢轴时取消。 提示:如果重试,事务可能会成功。
我想检查数据访问异常的错误代码,这是后台的 Postgres 数据库。例如,序列化失败异常错误代码为 40001。
如何检查 org.jooq.exception.DataAccessException 的错误代码?
我的动机是如果序列化失败,则重试事务。
在 jOOQ 3.8 中,引入了 SQLStateClass
和 SQLStateSubclass
(#4904(,以便您键入安全访问 SQL 标准 SQL 状态值。
catch (DataAccessException e) {
System.out.println(e.sqlStateClass());
System.out.println(e.sqlStateSubclass());
if (SQLStateSubclass.C40001_SERIALIZATION_FAILURE == e.sqlStateSubclass()) {
...
}
}
在 jOOQ 3.8 之前,您可以访问底层SQLException
以访问以下 SQL 状态值:
catch (DataAccessException e) {
if (e.getCause() instanceof SQLException &&
("40001".equals(((SQLException) e.getCause()).getSQLState()))) {
...
}
}