如何添加不区分大小写的JPA唯一约束?

时间:2014-09-09 11:12:14

标签: jpa case-insensitive

我想为JPA实体添加不区分大小写的唯一约束。

假设我们有一个实体员工需要对两列NAMEPROJECT_TITLE具有唯一约束,其中NAME不区分大小写。

JoHnPROJECT1的插入应该导致数据库JOHN,PROJECT1已存在行JOHN时违反唯一约束,JoHn在我们的案例中相同

上述要求的SQL在下面给出

ALTER TABLE employee ADD CONSTRAINT employee_name_unique
    UNIQUE(LOWER(NAME),PROJECT_TITLE);

1 个答案:

答案 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();
    }
}