【问题标题】:Grails hasMany: when child is updated, parent's version changesGrails hasMany:当孩子更新时,父母的版本会改变
【发布时间】:2010-09-13 07:44:46
【问题描述】:

我正在使用 Grails,并且对 hasMany 关系的工作方式感到非常惊讶。我有一个典型的 hasMany 关系,其中父 ID 在子表中。当我插入一个子对象并尝试通过父对象保存它时,父对象的版本 ID 会增加。我的问题是:当只有子对象发生变化时,为什么父级的版本 id 会发生变化?

class Parent { 
    static hasMany = [children: child]
}

class child {
    string name 
    Parent parent
    static belongsTo = [Parent]
}

def p = Parent.get(1)
p.addToChildren(new Child(name: "Roy"))
p.save()

p 的版本从 0 递增到 1。在 Grails 中有什么方法可以避免这种情况吗?

由于父版本 ID 的更改,我得到一个过时的对象异常。有什么帮助吗?

【问题讨论】:

  • 在我看来,Parent 对象已经改变了,因为它有了一个新的孩子。我的 2c 价值
  • Soren 是正确的 - 属性已更改(类似于将一个字符添加到 String 属性),因此整个对象都被视为已更改。这是 Hibernate 的事情,而不是 Grails 的事情。

标签: grails grails-orm one-to-many


【解决方案1】:

一种可能性是 disable optimistic locking 为您的域对象。

更新

或者试试to search。

【讨论】:

  • 还有其他解决方案吗?我需要在表中有一个版本 id 列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 2021-08-17
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多