好吧,不同之处在于您尝试使用对象反映的设计。
在您的情况下,每个
Question都可以分配给多个
Categories-这是
@*ToMany关系的标志。现在,您必须决定是否:
- 每个
Category
都只能Question
分配一个(这将导致 唯一的 约束,这意味着 没有其他Category可以引用相同的Question )-这将是@OneToMany
关系, - 每个
Category
可以Questions
分配多个(Category
表中没有唯一约束)-这就是@ManyToMany
关系。
@OneToMany(问题- >类别)
仅当您使用
@JoinTable或使用显式定义时,连接关系才能由连接表表示。当它是 单向
关系时,其中拥有方为“一个”方(这意味着在
Question实体中您具有的集合
Categories,但在
Categories您中没有对的引用
Question。
如果您考虑一下,使用联接表似乎很合理。DBMS没有其他方法可以保存
Question表中的一行与表中的多行之间的连接
Categories。
但是,如果要建模双向关系,则需要指定
Category(“很多”面)是该关系的拥有面。在这种情况下,DBMS可以在
Category表中创建带有外键的连接列,因为每一
Category行只能连接一个
Question。
这样,您就没有任何联接表,只有简单的外键(仍然,如开头所述,您可以使用强制创建联接表
@JoinTable)。
@多多多
此关系必须表示为联接表。它的工作原理与单向
@OneToMany关系非常相似,但是在这种情况下,您可能会有来自的
Question多行与来自的多行
Categories。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)