我总是根据关系背后的逻辑使用@OneToOne
和@ManyToOne
关系 - 如果它在每一端只有一个实体,那么它是一对一的。如果另一方的实体在这一方可能有多个相应的实体,那么它就是多对一的。即学生只有一本学生用书,每本学生用书只属于一名学生(一对一)
但是,我刚刚在代码库中看到了几个@OneToOne
注释实际上并不是一对一的注释。不知何故,这已经有一段时间了,我想知道hibernate是否会以不同的方式处理这些注释?
如果某个实体上有@OneToMany
,但除此之外,它可能不允许在另一方进行@OneToOne
映射?
答案 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。