我有一些无法理解的区别@OneToMany
和@ManyToMany
。当我使用@OneToMany
它时,默认情况下会创建一个JoinTable,并且如果您添加mapledBy属性,则两个实体之间将具有双向关系。
我有一个Question
可能属于许多人Categories
,一个Category
可能属于许多人Questions
。我不知道是否应该使用,@ManyToMany
或者@OneToMany
因为对我来说这似乎是完全相同的事情,但可能并非如此。
有人可以解释吗?
好吧,不同之处在于您尝试使用对象反映的设计。
在您的情况下,每个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
。
问题内容: 由于使用a 和批注之间都存在一对多关系,因此两者之间有什么区别? 问题答案: 我相信主要用于映射非实体(可嵌入或基本),而用于映射实体。因此,使用哪种取决于您要实现的目标。
两者之间有什么区别: 而且
问题内容: 设置JVM参数之间有区别吗 在JVM启动并设置Linux环境变量时 JVM启动之前? 两种方法的优点/缺点是什么? 问题答案: 第一种形式 将在java字节码级别处理,先调用,然后再调用。在函数call中,将检查system属性以获取库的完整路径,并将此完整路径传递给本机代码以调用system api ,最终使库被加载。您可以从OpenJDK存储库浏览源。以下代码段是我从链接中复制的段
问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:
问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。