man*_*rma 2 jpa case-insensitive
我想向 JPA 实体添加不区分大小写的唯一约束。
假设我们有一个实体员工,需要对两列有唯一约束NAME,并且不区分大小写PROJECT_TITLE。NAME
当数据库中已存在行时,插入JoHn,PROJECT1应该会导致唯一约束冲突,因为,在我们的例子中是相同的。JOHN,PROJECT1JOHNJoHn
下面给出了满足上述需求的SQL
ALTER TABLE employee ADD CONSTRAINT employee_name_unique
UNIQUE(LOWER(NAME),PROJECT_TITLE);
Run Code Online (Sandbox Code Playgroud)
JPA 不支持这种约束。对于纯 JPA 解决方案,您必须使用额外的列。请参阅此处的答案:不区分大小写的 JPA 唯一约束?
@Entity Foo {
private value;
@Column(unique = true)
private valueLowercased;
@PrePersist @PreUpdate private prepare(){
this.valueLowercased = value == null ? null : value.toLowerCase();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5740 次 |
| 最近记录: |