我有以下休眠映射:
@Entity
public class UserPattern {
@Id
@GeneratedValue
Integer id;
@ManyToOne
@JoinColumn(name = "user_id")
User user;
@ManyToOne
@JoinColumn(name = "patern_id")
Pattern pattern;
...
}
休眠允许添加user
和pattern
的组合是唯一的唯一索引吗?
我认为它将起作用:
@Table(name="UserPattern",
uniqueConstraints=
@UniqueConstraint(columnNames={"user_id", ""})
或
@Table(name="UserPattern", uniqueConstraints={
@UniqueConstraint(columnNames={"user_id", "patern_id"})
})
您可以看一下@NaturalId
:
5.1.8。天然ID
尽管我们建议使用代理键作为主键,但您应尝试识别所有实体的自然键。自然键是唯一或非空的属性或属性组合。这也是不可变的。将自然键的属性映射为
@NaturalId
或将其映射到@NaturalId
元素内。 Hibernate将生成必要的唯一键和可为空性约束,因此,您的映射将更具自记录性。
但是请注意,关于不变性的子句-这可能不适合您的用例。
<natural-id>
我想你可以在@Entity
public class UserPattern {
@Id
@GeneratedValue
Integer id;
@ManyToOne
@JoinColumn(name = "user_id")
@NaturalId
User user;
@ManyToOne
@JoinColumn(name = "patern_id")
@NaturalId
Pattern pattern;
...
}
中使用unique
参数像这样:
@Column
这是@Column(name = "user_name", unique = true)
String username;
的快捷方式,您可以在说明中看到它:
UniqueConstraint