使用 spring-data-r2dbc 和 postgresql

问题描述

我在 postgresql 数据库中有一些限制(唯一的、外键......)。

我使用 spring 数据 r2dbc 存储库:ReactiveCrudRepository

我想根据 DataIntegrityViolationExceptionconstraintName 字段中的 ErrorDetails 将存储库抛出的 PostgresqlDataIntegrityViolationException 转换为一些自定义异常。

但是包含 ExceptionFactoryPostgresqlDataIntegrityViolationException 类是包私有的。所以我不能将 DataIntegrityViolationException 的原因异常转换为 PostgresqlDataIntegrityViolationException

当我捕捉到 constraintName 时,访问 DataIntegrityViolationException 的最干净方法是什么?

(比解析异常消息更好^^)

编辑:

我已经结束了这个解决方案:

    val DataIntegrityViolationException.pgErrorDetails: ErrorDetails
        get() = when(val cause = this.cause) {
                null -> error("cause should not be null")
                else -> cause.javaClass
                        .getDeclaredField("errorDetails")
                        .apply { isAccessible = true }
                        .let { it.get(cause) as ErrorDetails }
                }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)