gpt4 book ai didi

java - 检查 org.jooq.exception.DataAccessException 是否序列化失败

转载 作者:行者123 更新时间:2023-11-29 11:59:32 25 4
gpt4 key购买 nike

我在 Java 中得到一个带有消息的 org.jooq.exception.DataAccessException

ERROR: could not serialize access due to read/write dependencies among transactions Detail: Reason code: Canceled on identification as a pivot, during conflict in checking. Hint: The transaction might succeed if retried.

我想查看数据访问异常的错误码,后台是Postgres数据库。例如序列化失败异常错误码为40001 .

如何检查 org.jooq.exception.DataAccessException 的错误代码?

我的动机是在序列化失败时重试事务。

最佳答案

在 jOOQ 3.8 中,SQLStateClassSQLStateSubclass引入 ( #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()))) {
...
}
}

关于java - 检查 org.jooq.exception.DataAccessException 是否序列化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35301231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com