Hibernate Mappedby示例

时间:2014-01-24 15:52:43

标签: java hibernate

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() {
    ...
}   

据我了解,CustomerPassport有一对一的关系,其中Customer是所有者,即负责级联Passport的更新。 mappedBy中的Passport表示它与Customer具有一对一的关系,但不对Customer的级联更新负责。

CustomerPassport有外键约束,反之亦然PassportCustomer

@JoinColumn(name="passport_fk") Customer的含义是什么? passport mappedBy中的Passport怎么样?它们是表示各自外键的表列吗?

1 个答案:

答案 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中不会创建其他字段。