gpt4 book ai didi

Hibernate 注释 - 不区分大小写的 UniqueConstraint

转载 作者:行者123 更新时间:2023-11-29 11:20:32 34 4
gpt4 key购买 nike

我有一个注释如下的实体:

@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"name"})})
public class Component extends Model {
...
}

是否可以让 UniqueConstraint 不区分大小写?我们正在使用 PostgreSQL。

最佳答案

我建议从不同的角度来解决这个问题:

  1. 添加一个新列,内部列,将其命名为 lcname(代表小写的名称)

    @NotEmpty
    @Column(nullable = false)
    private String lcname;
  2. 更改您设置为注释的约束以改为使用新字段:

    @Entity
    @Table(uniqueConstraints={@UniqueConstraint(columnNames={"lcname"})})
    public class Component extends Model {
    ...
    }
  3. 修改 name setter 以将 lcname 也设置为客户端提供的原始名称的小写

    public void setName(String name) {
    this.name = name;
    this.lcname = name.toLowerCase();
    }

就是这样。每次实体被持久化时,也会保存一个小写的名称。这样,如果您保存“A”,您将保存 lcname =“a”的记录,下次您尝试保存名称为“a”的实体时,由于 lcname 的约束,操作将失败更改对于从数据库中获取实体的任何人来说都是完全透明的,因为 lcname 是私有(private)的并且没有它的 getter,而原始的 getName 将返回创建它的客户端最初提供的原始名称。

关于Hibernate 注释 - 不区分大小写的 UniqueConstraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4031709/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com