我有一个域类,它扩展了另一个具有相同名称但在不同库中的不同包中的常规类。
问题是当我修改域类上的实例时,它没有被标记为脏,因此更改不会持久。
我读到 grails 3 版本对脏检查有一些增强,这可能是一个错误或者我遗漏了一些东西。
新对象可以正确保存,没有任何问题,我已经使用过是脏的()修改的域对象上的方法以及修改的属性&两者都返回false。对象附加到会话,并通过以下方式确认被附上().
为了重现,我使用以下代码创建了一个测试项目,并尝试从使用脚手架生成的默认 grails 视图更新对象,但更改仍然没有保留。
Note:我在 Grails 2.4 中做过类似的事情并且它曾经有效。
域类如下:
package com.perseus
class Derived extends Base{
static constraints = {
name blank: false, nullable: false
}
}
src/main/groovy 中的基类:
package com.perseus
class Base implements Serializable {
private static final long serialVersionUID = 1L
String name
}
控制器
package com.perseus
class DerivedController {
static scaffold = Derived
}
链接到githubproject https://github.com/Pritesh-Mhatre/grails.
Isssue:模型未标记为脏,即使已被修改。当模型类扩展另一个常规类时,就会发生这种情况。
如何重现:
- 运行应用程序。
- 创建一个新的模型对象(模型名称为Derived)
- 使用编辑视图修改对象并单击更新。
- 您将看到修改并未保留。