微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 spring-data-r2dbc 和 postgresql

如何解决使用 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 举报,一经查实,本站将立刻删除。