我有一个 Ebean 实体模型,其中包含 3 个与 @OneToMany 关系相关的实体,如下所示:
public class A extends Model {
@Id
@GeneratedValue
public Long id;
public String name;
@OneToMany(cascade = CascadeType.ALL)
public List<B> bList;
...
}
public class B extends Model {
@Id
@GeneratedValue
public Long id;
public String name;
@OneToMany(cascade = CascadeType.ALL)
public List<C> cList;
...
}
public class C extends Model {
@Id
@GeneratedValue
public Long id;
public String name;
...
}
我想删除特定 A 对象的 al Bs 和 Cs。我知道如果我做这样的事情,Ebean 可以处理 Cs 的删除:
for (B b : a.bList) {
b.delete();
}
但我认为这不是最好的解决方案。我想做这样的事情:
String sql = "DELETE FROM B WHERE B.a_id="+a.id;
SqlUpdate update = Ebean.createSqlUpdate(sql);
update.execute();
但它是一个原生 SQL,它输出一个“ConstraintViolationException”,因为它没有一个“ON DELETE CASCADE”。
最好的解决方案是什么?