Java Jpa使用可选多对一关系删除可选父级
我有一个类,它可以被多对一或一对一关系中的许多不同类引用,或者没有引用对象。删除此类的元素时,指向该元素的对象也应删除。实现这种行为的最美丽的方式是什么Java Jpa使用可选多对一关系删除可选父级,java,jpa,orm,Java,Jpa,Orm,我有一个类,它可以被多对一或一对一关系中的许多不同类引用,或者没有引用对象。删除此类的元素时,指向该元素的对象也应删除。实现这种行为的最美丽的方式是什么 class A { public remove() { // remove the element which is pointing to me } } class B { @ManyToOne private as } class C { @ManyToOne priv
class A {
public remove() {
// remove the element which is pointing to me
}
}
class B {
@ManyToOne
private as
}
class C {
@ManyToOne
private as
}
...
首先,我不认为将业务方法放在实体类中是一个“漂亮”的解决方案 我建议为您的A类创建DAO对象,并使您的关系与CascadeType设置为双向,以删除:
@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);
}
}
@实体
甲级{
@OneToMany(mappedBy=“parentB”,cascade=CascadeType.REMOVE)
私人儿童b;
@OneToMany(mappedBy=“parentC”,cascade=CascadeType.REMOVE)
私设儿童;
}
@无国籍
daoA类{
@持久上下文
实体管理器;
公共空间移除(A){
em.删除(a);
}
}
“美丽”在编程中是一个相当困难的术语。你想要实现什么?也许你最好问清楚,也许干净或者最不容易出错会比漂亮好。您可以考虑使用SQL查询删除所有其他可能引用对象的解决方案,但此解决方案很难扩展,因此工作方式不同。在codereview中尝试。。。