假设我有一个这样的实体:
@Entity
public Foo {
@Id
private Long id;
private String name;
private String type;
...
}
有没有办法表达名称和类型应该是唯一的? 例如,您可以使用类型为“y”的名称“x”和类型为“z”的名称“x”,而不是类型为“y”的其他“x”。
@EmbeddedId没有这个技巧,因为名称可以在以后更改 - 但是在实体的整个生命周期中,类型保持不变。
答案 0 :(得分:2)
您可以在@Table
注释上为您的实体添加约束。在您的情况下,您希望使两个连接的字段唯一。您可以使用@UniqueConstraint
注释。
@Entity
@Table(uniqueConstraints=
@UniqueConstraint(columnNames = {"name", "type"})
public Foo {
@Id
private Long id;
@Column
private String name;
@Column
private String type;
...
}