我有一个域类,它扩展了另一个具有相同名称但不同包中的groovy类,但是在不同的库中。Grails 3.1.1 - 模型类扩展另一个常规类时脏检查不工作
问题是,当我修改域类上的实例时,它没有标记为脏&因此更改不会持久。
我读过那个grails 3发行版有一些增强的脏检查&这可能是一个bug或者我错过了一些东西。
新对象正确保存没有任何问题,我已经使用isDirty()修改域对象以及修改的属性&上方法都返回假。对象附加到会话中,通过确定isAttached()。
为了重现,我创建了一个测试项目,代码如下:&尝试更新使用脚手架生成的默认grails视图中的对象,但这些更改仍未保留。
注意:我已经做了类似的东西在Grails 2.4 &它曾经工作。
域类如下:
package com.perseus
class Derived extends Base{
static constraints = {
name blank: false, nullable: false
}
}
基类中的src /主/常规:
package com.perseus
class Base implements Serializable {
private static final long serialVersionUID = 1L
String name
}
控制器
package com.perseus
class DerivedController {
static scaffold = Derived
}
链接到github project。
Isssue:即使模型已被修改,模型也未标记脏。当模型类扩展另一个常规类时会发生这种情况。
如何重现:
- 运行应用程序。
- 创建一个新模型对象(型号名称衍生)
- 使用编辑视图修改对象&单击更新。
- 您将看到修改不会持续。
这里没有足够的信息来知道什么是错的。有很多解释为什么一个对象在尝试更新后可能不会被认为是脏的。 –
我会尝试用一个非常小的项目重现它并共享一个链接。说实话,没有什么要补充的,我的观点是使用脚手架创建的,当我更新域时,更改不会持续。给我一些时间,我会回来更多的细节。 –
使用示例代码更新了问题,还给出了重现项目问题&github链接的步骤。 –