Hibernate的Docs(2.2.5.1一比一。)提出了下面的例子:休眠的mappedBy例
@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
。 Passport
中的mappedBy
表示它與Customer
有一對一的關係,但它不負責級聯更新到Customer
。
Customer
有Passport
到Customer
上Passport
一個外鍵約束,以及反之亦然。
@JoinColumn(name="passport_fk")
的Customer
是什麼意思? passport
在Passport
的mappedBy
中怎麼樣?他們是代表各自外鍵的表列嗎?
所以'@OneToOne(mappedBy =「passport」)'意味着有一個1對1的關聯,並且'客戶'的'護照'字段映射它(護照)?另外,是否有可能在沒有現有客戶的情況下創建護照?換句話說,Passport對客戶有沒有fk? –
@KevinMeredith是的OneToOne意味着1比1,顯而易見。沒有父母不能創造一個孩子。考慮一下數據庫級別,因爲你沒有在數據庫中已經有PK,你不能插入一個孩子。 – Eugene
根據這個答案(http://stackoverflow.com/a/9108618/409976),那麼我的理解是'護照'不會有'客戶'的外鍵約束。 –