假设我有一个这样的实体:
@Entity
public Foo {
@Id
private Long id;
private String name;
private String type;
...
}
有没有办法表达名称和类型应该是唯一的? 这意味着,例如,您可以使用类型为“y”的名称“x”和类型为“z”的名称“x”,但不能使用类型为“y”的其他“x”。
@EmbeddedId 并不能解决问题,因为名称可以稍后更改 - 但类型在实体的整个生命周期中保持不变。
最佳答案
您可以在 @Table
注释上添加实体的约束。在您的情况下,您希望使两个连接字段唯一。您将使用 @UniqueConstraint
注释。
@Entity
@Table(uniqueConstraints=
@UniqueConstraint(columnNames = {"name", "type"})
public Foo {
@Id
private Long id;
@Column
private String name;
@Column
private String type;
...
}
关于java - 对多个字段施加唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401751/