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() {
...
}
据我了解,Customer
与Passport
有一对一的关系,其中Customer
是所有者,即负责级联Passport
的更新。 mappedBy
中的Passport
表示它与Customer
具有一对一的关系,但不对Customer
的级联更新负责。
Customer
对Passport
有外键约束,反之亦然Passport
到Customer
。
@JoinColumn(name="passport_fk")
Customer
的含义是什么? passport
mappedBy
中的Passport
怎么样?它们是表示各自外键的表列吗?
答案 0 :(得分:7)
What is the meaning of the @JoinColumn(name="passport_fk") of Customer?
这意味着将在Customer表中创建passport_fk字段,因为属于,此表被视为关系的所有者(尽管如此,您似乎也可以这样做)。
How about passport in the mappedBy of Passport
由于这是用 mappedBy 注释的,因此它表明这不是所有者,并且所有者是客户(注释的字段)。 name 属性告诉Hibernate在哪里可以找到有关FK映射的信息(在Customer内部有一个getPassport方法)。在Passport中不会创建其他字段。