可以将同一个父母保存为2个孩子:
我想禁用这种可能性。
域:
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@OneToOne
Parent parent;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
}
@Entity
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@OneToOne(mappedBy="parent")
private Child child;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@PreRemove
private void preRemove() {
child.setParent(null);
}
}
如何更改此代码以禁止2个孩子拥有同一父母的可能性?我应该爬FK还是其他东西?使用JPA如何做到这一点?
答案 0 :(得分:1)
在@JoinColumn
上定义@OneToOne
,然后添加unique = true
。这样,将在数据库侧检查父母的唯一性:
@OneToOne
@JoinColumn(name="PARENT_ID", unique = true)
Parent parent;