假设我有如下的单向 @ManyToOne关系:
@Entity
public class Parent implements Serializable {
@Id
@GeneratedValue
private long id;
}
@Entity
public class Child implements Serializable {
@Id
@GeneratedValue
private long id;
@ManyToOne
@JoinColumn
private Parent parent;
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个父P和子C 1 ... C n引用回P,那么在JPA中有一个干净漂亮的方法可以在删除P时自动删除子C 1 ... C n(即entityManager.remove(P))?
我正在寻找的是类似于ON DELETE CASCADESQL 的功能.
我还不太清楚cascade在删除操作中的工作方式.我想知道如果我有这个会发生什么:
class myBean{
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public Cliente getClienteDiAppartenenza() {
return clienteDiAppartenenza;
}
}
class Cliente{
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
public List<myBean> getMyBeans() {
return myBeans;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我用这个属性删除myBean,我不确定链接的Cliente是否也会被删除(很多人都很奇怪)或Cliente中的集合将被更新,myBean的实例被删除,然后保存.
会发生什么??Hibernato的文档对此并不十分清楚......