spring-boot - cause.getConstraintName() 返回一个奇怪的字符串而不是实际的约束名称
问题描述
我有一列设置为 as unique = true
。
这是我的实体的代码 -
@Entity
@Table(name = "users", uniqueConstraints=[UniqueConstraint(name = "userName", columnNames=["user_name"])])
class UserEntity(@Column(name = "user_id", nullable = false)
@Id @GeneratedValue(strategy = GenerationType.AUTO)
var id: Long = 0,
@Column(name = "user_name", nullable = false, unique = true)
@field:NotEmpty(message = "Please provide a user name")
var userName: String?)
现在,当存在DataIntegrityViolationException
或ConstraintViolationException
由于尝试插入重复项时user_name
,我尝试像这样提取约束名称的确切名称 -
val failConstraint = (ex.cause as ConstraintViolationException).constraintName
但是,我得到一个奇怪的字符串,而不是正确的约束名称 - “uk_k8s0f4n7n77w1a16yhua69ony”
详细的留言是这样的——
错误:重复的键值违反了唯一约束“uk_k8s0f4n7n77w1a16yhua69ony”\n 详细信息:键 (user_name)=(krtkush) 已存在。
我大致遵循这个答案 -识别触发 DataIntegrityViolationException 的约束名称
我哪里错了?
解决方案
我必须使我的 IDE 缓存无效并重新启动它才能工作。代码没有错。
推荐阅读
- r - 使用 R 和 Tidyverse 重新组织所有因子水平(以防止我的最终 ds 被混合)
- reactjs - req.user 未定义。React.js,路线,快递,护照
- excel - 将包含 hr:min:sec 和 min:sec 的 Excel 列转换为 hr:min:sec 格式
- c# - 尝试通过分段控制,Xamarin IOS 在容器视图中滑动 PVC 中的页面
- linux - 无法在 alpine docker 文件中运行 cron 消息
- nunjucks - Eleventy/njk - 基于动态标签的集合
- python - 转换 Pandas 日期时间以插入 MS SQL Server
- r - 在给定点的多边形内创建线
- python - Pyspark,PandasUDF;如何使用 Pyspark.PandasUDF 返回矩阵?
- java - 如何平滑隐藏动作模式工具栏然后显示动作栏