为什么逆不存在hibernate中的一对一关系?

时间:2014-03-11 04:03:43

标签: hibernate

在hibernate中,inverse属性将讨论关系所有者。那么,为什么它不存在于一对一映射关联之间?为什么它只存在于列表,集合之间等等?请让我理解。

1 个答案:

答案 0 :(得分:0)

让我们看一下,当您使用@O​​neToOne或@ManyToOne时,您说您的实体可以从另一个实体接收一个或多个对象。

然后,

Hibernate会明白你只想要一个关系对象的标识符。换句话说,它将像SQL关系一样工作,您可以创建一个名为“RelationedTable_ID”的列作为FK来表示两个表之间的绑定。

因此,我们可以假设Hibernate也会像这样工作。如果使用仅引用另一个实体中的一个唯一对象的注释,则不需要使用inverse属性或任何其他形式的映射。

但是,在使用@OneToMany或@ManyToMany注释时,您声明您的实体将从另一个实体(例如列表或集合)接收多个对象,这将意味着创建辅助表格将作为关系之间的映射。

换句话说,在类之间使用单个对象关系时,您只需要一个引用您需要引用的实体的属性。在使用多个对象关系时,您需要一个对象列表,这些对象需要一个额外的表来映射关系。


这也很重要:您可以通过在@OneToMany注释上方设置注释@JoinColumn(“entityTarget_ID”)来避免在关系中创建其他表,该注释将位于列表之前。例如:

@OneToMany
@JoinColumn("entityTarget_ID")
private EntityTarget entityTarget;

使用上面的示例,您将能够引用两个实体,而无需在它们之间使用辅助表。