我有兩個例子,第一個是@OneToOne單向映射和第二個雙向。在單向映射中,擁有方表必須包含引用其他表的ID的連接列;那麼在雙向中它們都必須包含彼此的外鍵列。但是在使用autogenerate策略生成數據庫模式後,兩個示例對數據庫模式具有相同的效果。單向映射是正常的,但雙向示例只包含一個外鍵列,但它必須涉及對方的外鍵!@OneToOne單向和雙向
單向映射
@Entity
public class Customer43 {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;
// Getters, Setters and Constructors.
}
@Entity
public class Address43 {
@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
// Getters, Setters and Constructors.
}
雙向映射
@Entity
public class Customer44 {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;
// Getters, Setters and Constructors.
}
@Entity
public class Address44 {
@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
@OneToOne(mappedBy = "address")
private Customer44 customer;
// Getters, Setters and Constructors.
}
爲什麼數據庫模式輸出相同的,爲什麼雙向映射的作用類似單向?
那麼,它們的優點或缺點是什麼? – 2012-02-25 14:04:59
單向關聯的優勢在於管理更容易,因爲您只需保持一側。雙向關聯的優點是您可以在兩個方向上導航(獲取客戶的地址,或獲取地址的客戶)。 – 2012-02-25 23:21:22
這是否適用於OneToMany和ManyToOne? – 2013-07-26 09:20:40