我有我作爲一個模板持久實體:如何深入克隆ColdFusion ORM中的持久實體?
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...
但是這變得越來越繁瑣的對象圖去更深。是否有更簡單的方法來深度克隆持久性實體,以便獲得全新的瞬態實體,包括其所有子集合?
我給了這個嘗試,它工作得很好。要記住的一件事是,它重複了所有事情,所以如果你有雙向關係回到樹上,你將最終複製整個數據庫。最後,我選擇了亨利的解決方案,因爲我希望對複製過程進行更細緻的控制,儘管這樣做的代碼要多得多。 –