GORM可以复制整个对象吗?

时间:2014-09-25 06:13:28

标签: grails groovy gorm grails-domain-class

我们正在使用grails来开发一些Web应用程序 对于具有子类的Domain类,我想知道我们是否可以复制整个对象,包括属于Parent的所有子对象?

谢谢

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以使用clone方法扩展gorm。

然而,如果你不想搞乱gorm api,一个非常简单的解决方案是分离现有的对象并“重新”它。请注意,这不会执行deepClone

步骤:

  1. Null id。
  2. 更新副本中应有所不同的字段。
  3. 分离有问题的对象。
  4. 保存。
  5. 代码示例,假设域类Region具有唯一需要在保存之前更改的name属性:

    def copyRegion(Region region, String newName) {
        region.id = null
        region.name = newName
        region.discard()
        if (region.save()) {
            // handle success
        } else {
            // handle error
        }
    }
    

    另请参阅this question有关断开对象的信息。