以下定义摘自Hibernate association mapping tutorial here
每本书都与一个出版商有关,而一个出版商可能出版多本书。
我将在 Java 中用以下方式表示上述定义
class Book
{
Publisher pub;
}
class Publisher
{
Set<Book> books;
}
问题 1。现在我很困惑为什么教程说从书到出版商的关联称为“多对一”关联。我想在出版商和图书之间建立“一对多”关联是正确的方法。
问题 2. 下面是 Book 的 hbm。为什么我们不应该在 Publisher 的 hbm 映射中声明一对多。什么决定了这种关系映射的位置?
<class name="Book" table="BOOK">
<many-to-one name="publisher" class="Publisher" column="PUBLISHER_ID" />
</class>
最佳答案
这取决于关系是否是双向的。请参阅此处的第 7.3.2 节 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#collections-mapping .
双向关系是指您既可以从父级转到子级(即出版商 -> 图书),也可以从子级转到父级(即图书 -> 出版商)。父对子是一对多,而子对父是多对一。
请注意,您不需要双向关系。 “正确的方法”完全取决于您的应用程序需要什么。如果您只需要从出版商到图书,您只需要一对多。如果您只需要从书籍转到出版商,那么您只需要多对一。如果你需要两者,你可以同时拥有(即建立双向关系)/
关于java - Hibernate映射困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094882/