【问题标题】:can GORM duplicate whole object?GORM 可以复制整个对象吗?
【发布时间】:2014-09-25 06:13:27
【问题描述】:

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

谢谢

【问题讨论】:

  • 你为什么需要它?您需要在会话或数据库中复制对象吗?
  • AFAIK 什么都没有。老派的方法是导航你的层次结构,setId(null) 并希望最好。您可能有机会使用 gorm 元信息在您的案例中找到通用解决方案。
  • @PhilMr 仅复制对象本身? ,我也需要创建所有子对象

标签: grails groovy grails-orm grails-domain-class


【解决方案1】:

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

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

步骤:

  1. 将 ID 设为空。
  2. 更新副本中应该不同的字段。
  3. 分离有问题的对象。
  4. 保存。

代码示例,假设域类 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关于断开对象的信息。

【讨论】:

  • 只复制对象本身? ,我也需要创建所有子对象
猜你喜欢
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多