繁体   English   中英

Hibernate:如何区分两种单向关系和一种双向关系?

[英]Hibernate: How to distinguish two uni-directional relationship and one bi-directional relationship?

这个答案中,作者说:

以没有声明拥有方的两个实体映射为例:

@Entity
@Table(name="PERSONS")
public class Person {
    @OneToMany
    private List<IdDocument>  idDocuments;
}

@Entity
@Table(name="ID_DOCUMENTS")
public class IdDocument {
    @ManyToOne
    private Person person;
}

从 OO 的角度来看,这个映射定义的不是一个双向关系,而是两个独立的单向关系。

1.我的第一个问题是:为什么它不是双向关系?

文档甲骨文:

在双向关系中,每个实体都有一个引用另一个实体的关系字段或属性。 通过关系字段或属性,实体类的代码可以访问其相关对象

在上面的代码中,两个类都有一个引用另一个实体的关系字段。 那么为什么它不是双向关系,而这是两个单向关系呢?

2.我的第二个问题是:两个单向关系和一个双向关系有什么区别? 他们不是一回事吗?

(1)不知道为什么作者说这不是双向关系。

从休眠文档中,它还提到类似的映射是双向的,两个相关实体可以相互导航。

在这个例子中,给定一个Person ,我们可以通过它的idDocuments字段来获取它的IdDocument 给定一个IdDocument ,我们可以通过它的person字段来获取它的Person 所以是双向的。

(2) 我也不确定。 对我来说,只要关系中的两个实体可以相互导航,它就是一种双向关系。 如果只有一个实体可以导航到另一个实体,反之则不行,这是一种单向关系。

您可以找到我上面提到的示例的等效单向情况,以比较它们的差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM