Java 同一列上的多个复合唯一约束
我有一个实体,在同一列上有两个唯一的约束:Java 同一列上的多个复合唯一约束,java,hibernate,spring-boot,spring-data-jpa,Java,Hibernate,Spring Boot,Spring Data Jpa,我有一个实体,在同一列上有两个唯一的约束: @Entity @Table(name="checklist_item", schema = "general", uniqueConstraints = {@UniqueConstraint(name = "uq_general_checklist_ordinal", columnNames = {"checklist_id", "ordinal"}),
@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\u item add constraint uq\u general\u checklist\u ordinal unique(checklist\u id,ordinal,name)
Hibernate版本为5.4.6.最终版
由于这两件事并不等同,在同一列上创建两个单独的复合唯一约束的正确方法是什么?重复您的
@UniqueConstraint
名称