我有一个类,可以通过多对一或一对一关系中的许多不同类引用,或者没有引用对象。删除此类的元素时,也应删除指向它的对象。实现这种行为的最美妙方式是什么?
class A {
public remove() {
// remove the element which is pointing to me
}
}
class B {
@ManyToOne
private as
}
class C {
@ManyToOne
private as
}
...
答案 0 :(得分:1)
首先,我认为将业务方法放在实体类中并不是一个“漂亮”的解决方案。
我建议您为A类创建DAO对象,并将CascadeType设置为REMOVE的双向关系:
@Entity
class A {
@OneToMany(mappedBy = "parentB", cascade = CascadeType.REMOVE)
private Set<Child> childrenB;
@OneToMany(mappedBy = "parentC", cascade = CascadeType.REMOVE)
private Set<Child> childrenC;
}
@Stateless
class daoA {
@PersistenceContext
EntityManager em;
public void remove(A a){
em.delete(a);
}
}