java - Jpa 删除具有替代多对一关系的可选父级

标签 java jpa orm

我有一个类,它可以被许多不同的类以多对一或一对一关系引用,或者没有引用对象。当删除此类的元素时,指向它的对象也应该被删除。实现这种行为的最美丽的方式是什么?

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 设置为 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);
  }
}

关于java - Jpa 删除具有替代多对一关系的可选父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33543484/

相关文章:

java - 对涉及无主关系的实体进行持久更改的问题

java - 使用 hibernate 将数据集合持久保存/更新到数据库中

android - 如何在 Suger ORM Android 中检查表是否存在

database - DB::table ('table' ) 和 model::('table' ) 之间的区别

java - spring jpa - 获取具有 discriminatorType 的所有实体

java - XSL :FO inline and pretty print

java - dumpTreshold 不工作

java - 如果抛出异常,返回值不受影响吗?

Java JPA如何将一个实体实例与另一个实体的所有实例关联起来?

cakephp - 如何在cakephp 4中使用App Model,想在所有模型上执行SAVE查询后调用一个方法