使用 @OneToOne + @PrimaryKeyJoinColumn。生成 SQL:A 表含外鍵 b_id 指向 B 表主鍵。
@OneToOne(cascade=CascadeType.ALL) + @JoinColumn(name="b")@OneToOne(mappedBy="b")生成 SQL:A 表含外鍵 b 指向 B 表主鍵。若缺少 mappedBy,被關聯方也會生成外鍵字段,形成雙向外鍵。
默認外鍵列名為「屬性名_id」。可用 @JoinColumn(name="b") 指定。若不寫則用默認值。
使用 @JoinColumn(referencedColumnName="bname") 關聯被關聯方非主鍵列(需該列唯一)。
使用 @JoinTable 定義中間表,包含雙向外鍵。
與一對一相似,特殊情況:
mappedBy,會產生中間表(如 B_A)targetEntity 可關聯接口,實現面向接口編程不同註解組合生成的表結構差異巨大,需根據業務需求精確配置,避免產生冗餘外鍵或中間表。