如何解决使用 spring-data-r2dbc 和 postgresql
我在 postgresql 数据库中有一些限制(唯一的、外键......)。
我使用 spring 数据 r2dbc 存储库:ReactiveCrudRepository
我想根据 DataIntegrityViolationException
的 constraintName
字段中的 ErrorDetails
将存储库抛出的 PostgresqlDataIntegrityViolationException
转换为一些自定义异常。
但是包含 ExceptionFactory
的 PostgresqlDataIntegrityViolationException
类是包私有的。所以我不能将 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 举报,一经查实,本站将立刻删除。