Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何添加不区分大小写的JPA唯一约束?_Jpa_Case Insensitive - Fatal编程技术网

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

如何添加不区分大小写的JPA唯一约束?,jpa,case-insensitive,Jpa,Case Insensitive,我想向JPA实体添加一个不区分大小写的唯一约束 假设我们有一个实体员工,该员工需要对两列NAME和PROJECT\u TITLE具有唯一约束,其中NAME不区分大小写 当数据库中已经存在一行JoHn,PROJECT1时,插入JoHn,PROJECT1应该会导致唯一约束冲突,因为JoHn,JoHn与我们的情况相同 下面给出了满足上述要求的SQL ALTER TABLE employee ADD CONSTRAINT employee_name_unique UNIQUE(LOWER(NAM

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

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

当数据库中已经存在一行
JoHn,PROJECT1
时,插入
JoHn
PROJECT1
应该会导致唯一约束冲突,因为
JoHn
JoHn
与我们的情况相同

下面给出了满足上述要求的SQL

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

JPA不支持这种约束。对于纯JPA解决方案,您必须使用附加列。请看下面的答案:


SQL是这项工作的合适工具。使用它。我希望JPA支持不区分大小写的唯一性约束,并在此处提出功能请求:
@Entity Foo { 
    private value;
    @Column(unique = true)
    private valueLowercased;

    @PrePersist @PreUpdate private prepare(){
        this.valueLowercased = value == null ? null : value.toLowerCase();
    }
}