2015-03-25 36 views
-1

有一個公司實體與子接觸實體。 UI包含公司的聯繫人網格。如何修改對象樹作爲一個整體

我想要用戶打開公司的卡片,編輯公司,添加一些新的聯繫人,刪除和修改一些現有的聯繫人。如果用戶點擊「取消」,則不應應用更改。如果用戶單擊「保存」,則必須應用對公司和子聯繫人的所有更改。

我們怎樣才能用Java和Hibernate實現這樣的邏輯?

UPDATE

我看到我的問題可能被誤解,所以我會盡力重新制定。

問題是:作爲一個整體,改變對象樹(具有一層或更多級別的子集或集合的父對象)的好Hibernate模式是什麼?例如,我們是否應該將所有孩子的父對象加載到內存中,然後將其分離,修改併合並?

+0

這個問題有點太廣泛,不能回答,缺少重要細節。例如,這是一個Web應用程序?用戶將如何進行更改?爲了得到答案,你最好專注於具體問題。 – beny23 2015-03-25 09:38:04

回答

0

這是如此困難。下面的例子或你的。實體處於一對多關係中。

CompanyCards (one) --- Contacts(many) 

你的實體將如下

public class CompanyCards implements Serializable{ 

    @OneToMany(mappedBy=company) 
    @Cascade({CascadeType.ALL}) 
    public List<Contacts> contacts; 

    //getters and setters 

} 

如果要挽救公司和聯繫人只是發送從客戶端修改服務器CompanyCards分離的對象。 (刪除聯繫人/更新公司/更新甚至聯繫人)

在休眠期間,您必須做session.saveOrUpdate(companyCards)。 Hibernate將負責更​​新父項和子項。提供你提到級聯類型到CascadeType.ALL