Grails 3.1.1-肮脏的检查在模型类扩展另一个Groovy类时不起作用



我有一个域类,该类别延伸了另一个带有相同名称但在其他库中的套件中的groovy类。

问题是当我在域类上修改实例时,它没有标记为dirty&因此,变化不持续。

我读到Grails 3版本对Dirty Checking&这可能是一个错误,或者我缺少一些东西。

新对象可以正确保存而没有任何问题,我在修改的域对象上使用了 isdirty()方法,以及修改的属性&两个返回 false 。对象已连接到会话中,并用 iSattached()

确认。

要复制,我创建了一个带有以下代码&的测试项目。尝试从使用脚手架生成的默认grails视图中更新对象,但仍未持续更改。

注意:我在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
}

链接到GitHub项目。

ISSSUE :即使已修改了模型,模型也不是肮脏的。当模型类扩展另一个时髦的类时,就会发生这种情况。

如何复制:

  1. 运行应用程序。
  2. 创建一个新的模型对象(派生模型名称)
  3. 使用编辑视图修改对象&单击更新。
  4. 您会看到修改不会持续。

最后,我在这里找到了一个参考,该引用解释了未能更新肮脏检查状态的原因。

我添加了 @dirtycheck 注释并解决了问题。

但是,这对我们的图书馆的设计产生了负面影响。

我们为每个类别都有单独的项目:

  • 商业模型类
  • 商业逻辑类
  • 用户界面

这个想法是要使模块完全彼此独立。所以模型&任何UI技术都可以使用商业逻辑层。现在的问题是,我必须将Gorm依赖性添加到我的业务模型项目中以进行注释。

compile 'org.grails:grails-datastore-gorm:6.1.7.RELEASE'

设计明智的选择,我们喜欢独立于UI或Hibernate等持久技术的项目中的模型类。因此,这些模型类可以在各种不同的项目中使用,而无需任何其他依赖项。到目前

有什么办法可以解决此问题,而无需修改基类?

简而言之,模型类(POJO)现在取决于Grails框架,而在早期版本中,它们不是。

相关内容

  • 没有找到相关文章

最新更新