有一个有子联系实体的公司实体。 UI包含具有联系人网格的公司卡。
我希望用户打开公司的卡片,编辑公司,添加一些新的联系人,删除和修改一些现有的联系人。如果用户点击"取消"不应该进行任何更改。如果用户点击"保存"必须应用公司和子女联系人的所有变更。
我们如何使用Java和Hibernate实现这样的逻辑?
更新
我发现我的问题可能会被误解,所以我会尝试重新制定。
问题是:作为一个整体,更改对象树(具有1个或更多级别的子集或集合的父级)的Hibernate模式是什么?例如,我们应该在所有子节点的内存中加载父对象,分离它,修改然后合并吗?
答案 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