【发布时间】:2016-03-28 16:58:45
【问题描述】:
我已经阅读了一些休眠关系映射教程。这有点令人困惑 - 休眠关系。
在第一个example 中,student 和 Department 表都有一个名为 department_id 的列。
在学生实体中,
@ManyToOne
@JoinColumn(name="department_id")
private Department department;
在部门实体中,
@OneToMany(mappedBy="department")
private Set<Employee> employees;
- @JoinColumn 指的是哪个表的列?
- 假设在部门表/实体中,department_id 被命名为id,那么如何引用呢?
- 还有为什么没有将 department_id 列指定为 Student 实体类中的列?
在第二个example 中,我明白了(如果我错了,请纠正我)学生需要通过 Student_Phone 一对多到电话,同时使用 student_id 连接到 student_phone。
在学生实体中,
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "STUDENT_PHONE", joinColumns = { @JoinColumn(name = "STUDENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "PHONE_ID") })
public Set<Phone> getStudentPhoneNumbers() {
return this.studentPhoneNumbers;
}
我的问题是使用 inverseJoinColumn 是什么。我知道 inverseJoinColumn 以某种方式用于连接到电话表。但我想
- 这种反向连接是如何建立的?
- 是要求 Phone 通过 phone_id 连接到 student_phone,反之亦然?
以上两个例子仅供参考。
与 persistence api 一样,它表示连接列根据映射类型引用目标或源表 fk。
如果有人能提供一种简单的方法来理解整个映射(通过示例),那将会很有帮助。
【问题讨论】:
-
在 javadoc 中有详细说明:docs.oracle.com/javaee/6/api/javax/persistence/…。如果您需要澄清特定代码段,请在问题中发布该特定代码段。不是链接。
-
谢谢你的链接..我现在就去看看..