hibernate(和JPA)对@OneToOne和@ManyToOne的处理方式有何不同?

时间:2012-10-12 07:11:50

标签: hibernate jpa

我总是根据关系背后的逻辑使用@OneToOne@ManyToOne关系 - 如果它在每一端只有一个实体,那么它是一对一的。如果另一方的实体在这一方可能有多个相应的实体,那么它就是多对一的。即学生只有一本学生用书,每本学生用书只属于一名学生(一对一)

但是,我刚刚在代码库中看到了几个@OneToOne注释实际上并不是一对一的注释。不知何故,这已经有一段时间了,我想知道hibernate是否会以不同的方式处理这些注释?

如果某个实体上有@OneToMany,但除此之外,它可能不允许在另一方进行@OneToOne映射?

2 个答案:

答案 0 :(得分:0)

请查看以下链接,了解有关hibernate中支持的映射关联的全面说明。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/associations.html

答案 1 :(得分:0)

我不知道Hibernate是如何工作的,但作为JPA提供者的EclipseLink并没有区分这两者。而且大多数应用程序都没有;从技术上讲,OneToOne应该对外键有一个唯一的约束,但是我从未见过使用过的,很多应用程序都使用它并允许重用目标。

JPA规范没有对ManyToOne行为施加任何额外限制,因此我不会在任何提供程序中依赖它。我只使用ManyToOne作为OneToMany关系的后向指针 - 如果没有OneToMany,我只使用OneToOne。