【发布时间】:2015-04-05 12:57:17
【问题描述】:
我正在使用 grails 2.3.8
我们有以下领域类:
abstract class GroupItem {
static belongsTo = [group:AppGroup]
static mapping = {
tablePerHierarchy = false
}
}
class MyDomain extends GroupItem {
String name
String type
int Identifier
static hasMany = [attributes:Attribute]
static mapping = {
attributes cascade: 'all-delete-orphan'
}
}
class Attribute {
String name
String value
static belongsTo = [myDomain:MyDomain]
}
在我的控制器的“更新”方法中,我试图更新一个“MyDomain”对象。我可以更新与域相关联的属性,但是当我尝试更改实例本身的任何属性(名称、标识符或类型)时,更改不会持续存在。控制器代码:
def update(Long id) {
---
def myDomain = MyDomain.get(id)
myDomain.type = 'DIFFERENT TYPE'
myDomain.save(flush:true, failOnError:true)
}
但是,数据库中的信号仍然具有与创建时相同的类型。为了尝试遵循逻辑,我向打印出类型的域类添加了一个 beforeUpdate 方法,我可以看到它正在被调用,并且在 beforeUpdate 中它认为该类型是我的新值,但是更新永远不会持久。没有异常,对象验证,并且任何日志中都没有任何内容。任何线索可能导致这种情况?
干杯!
【问题讨论】:
-
一些错误?如果不是,请尝试 beforeInsert() 而不是 beforeUpdate()
-
不,没有错误。刚刚尝试检查,似乎认为该对象不脏。
标签: grails grails-orm grails-domain-class