给出以下JPA模型:
@Entity
public class Customer {
@Id
private long id;
@OneToOne(mappedBy="customer")
private ShippingAddress shippingAddress;
//...
}
@Entity
public class ShippingAddress {
@Id
private long id;
@OneToOne
private Customer customer;
//...
}
这将为customer
表中的shipping_address
表(即shipping_address.customer_id
)创建一个外键。
从数据库的角度来看,可以说客户是父表,而shipping_address是子表,因为
但是,根据JPA,此关系的所有者为ShippingAddress
,因为mappedBy
的JavaDoc声明
此元素仅在关联的反(非所有权)侧指定。
我感到非常困惑,根据JPA,关系的所有者(从数据库的角度来看)将被视为子表。有没有办法调和这种明显的矛盾?
答案 0 :(得分:0)
简而言之:正如在here和here之前发布的那样,该关系的拥有方是将FK保留在数据库表中的那一方。
您可以阅读此excellent answer,了解原因的完整说明。