Grails 3.1.1 - 模型类扩展另一个常规类时脏检查不工作
我有一个域类,它扩展了另一个具有相同名称但不同包中的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:即使模型已被修改,模型也未标记脏。当模型类扩展另一个常规类时会发生这种情况。
如何重现:
- 运行应用程序。
- 创建一个新模型对象(型号名称衍生)
- 使用编辑视图修改对象&单击更新。
- 您将看到修改不会持续。
回答:
最后,我找到了一个参考here,它说明了无法更新脏检查状态的原因。
我加了@DirtyCheck注解它解决了这个问题。
但是这对我们的图书馆的设计有负面影响。
我们对每个类别单独的项目:
- 业务模型类
- 业务逻辑类
- 用户界面
的想法是有完全相互独立的模块。因此,任何UI技术都可以使用模型&业务逻辑liraries。现在的问题是,我不得不向我的业务模型项目添加gorm依赖注释。
compile 'org.grails:grails-datastore-gorm:6.1.7.RELEASE'
设计明智的,我们喜欢在完全独立的UI或持续性的技术如Hibernate的项目我们的模型类。以便这些模型类可以用于各种不同的项目,而无需任何额外的依赖项。我们通过创建一个新的类来实现这一点,它扩展了我们库中的实际模型类
有没有什么办法可以解决这个问题,而不需要修改基类?
简而言之,模型类(POJO)现在依赖于grails框架,而在早期版本中,它们不是。
以上是 Grails 3.1.1 - 模型类扩展另一个常规类时脏检查不工作 的全部内容, 来源链接: utcz.com/qa/264259.html