템플릿으로 사용하는 영구적 인 엔티티가 있습니다.ColdFusion ORM에서 영구 객체를 어떻게 복제합니까?
Company
Locations
Departments
Employees
즉, Company
에는 많은 Departments
이 포함되어있는 많은 Locations
이 포함되어 있습니다. 새 회사를 만들 때 복사해야하는 템플릿으로 Company
을 하나 설정했습니다. 그러나이 템플리트는 데이터베이스에 지속됩니다. 나는 그것을 깊게 복제하기 위해 다음의 코드를 사용했다.
var template = EntityLoadByPK("Company", 13);
var company = Duplicate(template);
EntitySave(company);
그러나 엔티티가 세션에 연결되어 있지 않다는 오류 메시지가 나타납니다. 그래서 저장하기 전에 모든 ID에 0을 할당하려고했습니다.
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...
하지만 오브젝트 그래프가 깊어 질수록 더 복잡해집니다. 영속 엔티티를 딥 복제하는 더 쉬운 방법이 있나요? 그래서 모든 하위 컬렉션을 포함하여 새로운 과도기 엔티티를 얻을 수 있습니까?
나는 이것을 시험해 보았고 꽤 잘 돌아갔다. 한 가지 명심해야 할 것은 모든 것이 중복되므로 트리를 백업하는 양방향 관계가 있으면 전체 데이터베이스를 복제하게됩니다. 결국 헨리의 솔루션을 따라 갔다. 복제 프로세스에 대한 세분화 된 제어를 원했기 때문이다. –