【发布时间】:2011-11-27 09:46:48
【问题描述】:
我有一个作为模板使用的持久实体:
Company
Locations
Departments
Employees
换句话说,Company 包含许多 Locations,其中包含许多 Departments,其中包含许多 Employees。我有一个Company 设置为模板,创建新公司时应复制该模板。但是,此模板在数据库中是持久的。我尝试使用以下代码对其进行深度克隆:
var template = EntityLoadByPK("Company", 13);
var company = Duplicate(template);
EntitySave(company);
但我收到一条错误消息,指出实体未附加到会话。因此,我尝试在保存之前将 0 分配给所有 ID:
company.setId(0);
for (location in company.getLocations())
{
location.setId(0);
// more nested for loops
}
但我收到了类似的错误。最后,我尝试直接 1:1 复制属性:
var newCompany = EntityNew("Company");
newCompany.setName(company.getName());
newCompany.setCEO(company.getCEO());
// etc...
但是随着对象图的深入,这会变得越来越麻烦。有没有更简单的方法来深度克隆持久实体,从而获得一个全新的瞬态实体,包括它的所有子集合?
【问题讨论】:
标签: hibernate orm coldfusion coldfusion-9 deep-copy