我想为JPA实体添加不区分大小写的唯一约束。
假设我们有一个实体员工需要对两列NAME
和PROJECT_TITLE
具有唯一约束,其中NAME
不区分大小写。
JoHn
,PROJECT1
的插入应该导致数据库JOHN,PROJECT1
已存在行JOHN
时违反唯一约束,JoHn
在我们的案例中相同
上述要求的SQL在下面给出
ALTER TABLE employee ADD CONSTRAINT employee_name_unique
UNIQUE(LOWER(NAME),PROJECT_TITLE);
答案 0 :(得分:3)
JPA不支持这种限制。对于纯JPA解决方案,您必须使用其他列。请在此处查看答案:Case-insensitive JPA unique constraint?
@Entity Foo {
private value;
@Column(unique = true)
private valueLowercased;
@PrePersist @PreUpdate private prepare(){
this.valueLowercased = value == null ? null : value.toLowerCase();
}
}