如何修改对象树作为一个整体

时间:2015-03-25 09:28:46

标签: java hibernate

有一个有子联系实体的公司实体。 UI包含具有联系人网格的公司卡。

我希望用户打开公司的卡片,编辑公司,添加一些新的联系人,删除和修改一些现有的联系人。如果用户点击"取消"不应该进行任何更改。如果用户点击"保存"必须应用公司和子女联系人的所有变更。

我们如何使用Java和Hibernate实现这样的逻辑?

更新

我发现我的问题可能会被误解,所以我会尝试重新制定。

问题是:作为一个整体,更改对象树(具有1个或更多级别的子集或集合的父级)的Hibernate模式是什么?例如,我们应该在所有子节点的内存中加载父对象,分离它,修改然后合并吗?

1 个答案:

答案 0 :(得分: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