2015-11-05 44 views
1

我有一個類,它可以在許多一對一或一對一的關係中有許多不同的類引用或沒有引用對象。當這個類的元素被刪除時,指向它的對象也應該被刪除。什麼是實現這種行爲最美麗的方式?Jpa刪除可選的父親與替代多對一的關係

class A { 
    public remove() { 
     // remove the element which is pointing to me 
    } 
} 

class B { 
    @ManyToOne 
    private as 

} 

class C { 
    @ManyToOne 
    private as 
} 
... 
+0

「美麗」是在編程相當困難的任期。你想實現什麼?也許你最好在[codereview @ Stackexchange](http://codereview.stackexchange.com) – jkalden

+0

詢問。也許乾淨或最不容易出錯將比美麗更好。您可以考慮使用SQL查詢刪除所有其他可能引用的對象的解決方案,但該解決方案很難擴展 – PKuhn

+0

儘管如此,SO的工作方式卻有所不同。嘗試在codereview ... – jkalden

回答

1

首先,我不認爲這是將商業方法放在實體類中的「美麗」解決方案。

我會建議爲你的類創建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); 
    } 
}