Hibernate Docs(2.2.5.1.一对一)提供了以下示例:
@Entity
public class Customer implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="passport_fk")
public Passport getPassport() {
...
}
@Entity
public class Passport implements Serializable {
@OneToOne(mappedBy = "passport")
public Customer getOwner() {
...
}
Run Code Online (Sandbox Code Playgroud)
据我了解,Customer有一个一比一的关系Passport,这里Customer是所有者,即负责级联更新Passport.在mappedBy在Passport表明它有一个一对一的关系Customer,但它是不负责级联更新Customer.
Customer有一个外键约束Passport的,以及反之亦然Passport来Customer.
是什么意思@JoinColumn(name="passport_fk")的Customer?如何passport在mappedBy的Passport?它们是表示各自外键的表列吗?
What is the meaning of the @JoinColumn(name="passport_fk") of Customer?
Run Code Online (Sandbox Code Playgroud)
这意味着将在Customer表中创建passport_fk字段,因为它属于此处,此表被视为关系的所有者(尽管您似乎得到了这一点).
How about passport in the mappedBy of Passport
Run Code Online (Sandbox Code Playgroud)
由于这是使用mappedBy注释的,因此它表明这不是所有者,并且所有者是Customer(被注释的字段).name属性告诉Hibernate在哪里可以找到有关FK映射的信息(在Customer内部有一个getPassport方法).在Passport中不会创建其他字段.