【发布时间】: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