我有两个例子,第一个是@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