hibernate - 您如何在 ColdFusion ORM 中深度克隆持久实体?

标签 hibernate orm coldfusion coldfusion-9 deep-copy

我有一个用作模板的持久实体:

Company
    Locations
        Departments
            Employees

换句话说,一个Company包含许多Locations,其中包含许多Departments,而Departments又包含许多Employees .我将一个 Company 设置为模板,在创建新公司时应将其复制。但是,此模板在数据库中是持久的。我尝试使用以下代码对其进行深度克隆:

var template = EntityLoadByPK("Company", 13);
var company =  Duplicate(template);
EntitySave(company);

但我收到一条错误消息,指出该实体未附加到 session 。所以然后我尝试在保存之前将 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...

但是随着对象图的深入,这会变得越来越麻烦。是否有更简单的方法来深度克隆持久实体,以便您获得一个全新的 transient 实体,包括它的所有子集合?

最佳答案

我上次遇到同样的情况,只是在root CFC中写了一个类似clone的方法。不能称它为 clone 顺便说一句,因为我相信它是保留的。

关于hibernate - 您如何在 ColdFusion ORM 中深度克隆持久实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7592706/

相关文章:

java - 使用投影获取集合(hibernate)

java - Spring应用中如何实现Hibernate DAO的一些疑惑

java - 如何避免 Hibernate ValidationException 上的自动实体更新

javascript - sailsjs 创建两个模型时的错误处理

php - ORM 调用应该在模型内部还是 Controller 内部?

xml - 检查 XML 是否存在特定键

hibernate - JDBC 类型 : 2003 没有方言映射

actionscript-3 - 使用BlazeDS和AS3的URLLoader将AMF作为REST格式

coldfusion - 在 Coldfusion 中使用来自动态命名变量的列名

java - Hibernate <generator> 标签中param的用途是什么?