在关系所有者的双向一对一映射中是否需要unique=true
?
@Entity
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@OneToOne(cascade={CascadeType.PERSIST})
@JoinColumn(name="passport_id", unique=true) //is unique=true required for bi-directional one-to-one mapping
private Passport passport;
public Passport getPassport() {
return passport;
}
}
@Entity
public class Passport {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="passport_number")
private String passportNumber;
@OneToOne(mappedBy="passport")
private Customer customer;
public Customer getCustomer() {
return customer;
}
}
Hibernate文档说数据库中的 FK列应该被约束为模拟一对一的多重性,但它不会在双向映射中添加unique=true
答案 0 :(得分:1)
这是因为它不是强制使用Hibernate自动DDL功能。您可以使用增量架构更新脚本,并且与架构相关的注释将毫无用处。坦率地说,我们在内存集成测试中使用它们。
正如您所指出的,JoinColumn应该声明唯一性约束。