【问题标题】:Multiple compound unique constraints over same column同一列上的多个复合唯一约束
【发布时间】:2019-11-26 12:56:43
【问题描述】:

我有一个实体在同一列上有两个唯一约束:

@Entity
@Table(name="checklist_item", schema = "general",       
        uniqueConstraints = {@UniqueConstraint(name = "uq_general_checklist_ordinal",
                             columnNames = {"checklist_id", "ordinal"}),                             
                             @UniqueConstraint(name = "uq_general_checklist_ordinal",
                                     columnNames = {"checklist_id", "name"})                           
                             }
      )
public class ChecklistItem extends RecordInfo {

    @NotNull
    @Column
    @Length(max = 30)
    private String name;

    @Column
    @NotNull
    private long ordinal;

    @Column
    private String comment;

    @ManyToOne(fetch = FetchType.LAZY)
    @Cascade(org.hibernate.annotations.CascadeType.DELETE)
    @JoinColumn(name="checklist_id", foreignKey = @ForeignKey(name = "fk_general_checklist_checklistitem"))
    private Checklist checklist;

我正在尝试创建两个单独的唯一约束组合:[(checklist_id, name), (checklist_id, ordinal),但是正如我在日志中看到的那样,hibernate 会创建一个组合唯一约束:

Hibernate: alter table general.checklist_item add constraint uq_general_checklist_ordinal unique (checklist_id, ordinal, name)

休眠版本为5.4.6.Final

由于这两个东西不等价,在同一列上创建两个单独的复合唯一约束的正确方法是什么?

【问题讨论】:

    标签: java hibernate spring-boot spring-data-jpa


    【解决方案1】:

    您的@UniqueConstraint 名称重复了。

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 2012-08-10
      • 2011-02-11
      相关资源
      最近更新 更多