Lin*_*k19 5 java many-to-many hibernate composite-key unique-constraint
所以昨天我问了这个问题,但目标职位已经改变,问题不同了:
我想知道是否可以创建将模拟我所需关系的实体,以便Hibernate在我启动应用程序时创建我的模式.
我想要的关系看起来像这样:
问题是Join表实际上可以包含不链接到任何Elements的行.该结构表示基于"类型"和"值"对的元素分类,并输入到该特定应用之外的系统中.
我希望能够做的是通过映射将我的元素Hibernate实体设置为包含类别列表,这样我就可以实际看到我的元素所属的类别,以便hibernate为我创建表格.
这是我到目前为止所做的:在我的Element Entity类中映射这样:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "ELEMENT_ELEMENTCATOGORY", joinColumns = {
@JoinColumn(name = "type", referencedColumnName = "type"),
@JoinColumn(name = "value", referencedColumnName = "value") })
@Column(name = "category")
public List<ElementCategory> getCategories() {
return categories;
}
Run Code Online (Sandbox Code Playgroud)
这完成了我想要的大部分内容,它创建了我的表格,如上所述,我想要的只是一个东西,在(类型,值)对的元素表中添加了一个唯一约束.我不希望这样,因为多个元素可以具有相同的类型和值对,我需要能够从开始创建中停止Unique Constraint,但是无法弄清楚当前映射的方式,我可以这样做吗?我错过了多对多关系的观点吗?
事实上,Hibernate 对类型和值列施加了唯一的约束,这似乎很合乎逻辑。
您在 @ManyToMany 映射中说,在可连接中,连接列是类型和值列。所以基本上你说 hibernate 应该通过 value 和 type 属性来确定哪个元素耦合到 ElementCategory。因此这两个属性的组合应该是唯一的。否则hibernate将不知道哪个Element属于哪个ElementType
如果您希望多个 Element 实体可以耦合到多个 ElementType 实体,并且类型和值的组合并不总是唯一的,那么您不能将这些属性用作 joincolumns
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |