当前位置: 首页 > 知识库问答 >
问题:

将dynamicUpdate设置为true时Grails Gorm beforeUpdate行为

齐昊
2023-03-14

我试图在beforeUpdate事件中更改域对象的属性。问题是更改后的属性没有到达数据库。有问题的域类将dymanicUpdate设置为true。我注意到,如果我将DynamicUpdate更改为false,该属性将持久化到DB。

我用GORM 6.0.11创建了一个简单的Grails 3.2.9项目,其中只有一个域类。

class Example {

    Integer status
    Date dateCreated
    Date dateClosed
    Date lastUpdated

    static constraints = {
        status nullable: true
        dateClosed nullable: true
    }

    static mapping = {
        dynamicUpdate true
    }

    def beforeUpdate() {
        if (isDirty('status')) {
             dateClosed = new Date();
        }
    }
}

默认情况下,DynamicUpdate设置为false,我在beforeUpdate事件中更改的属性将持久化到数据库中。尽管,如果我将DynamicUpdate切换为true,在beforeUpdate事件中更改的属性将不再持久化到数据库中。我在dateCreated列中得到的不是当前日期。

知道这种行为的原因是什么吗?知道如何在dynamicUpdate设置为true时获得相同的结果吗?

共有1个答案

李谦
2023-03-14

我不确定它是否与DynamicUpdate有关,但我最近发现,在GORM的之前*拦截器而不是java bean表示法中,您应该使用setter。

所以这个

def beforeUpdate() {
  dateClosed = new Date()
}

应该是

def beforeUpdate() {
  setDateClosed new Date()
}

出现这种行为的原因是,如果在同一个类中进行更改,则您正在更改的属性不会标记为脏。

 类似资料:
  • 首先,我会试着解释我对它的理解,以知道我对它的理解是否正确。 只更新实体中的修改值 在之前创建,以了解哪些属性已被更改,这在实体已在不同会话上加载和更新时非常有用 在中,哪个更好或更快,一次更新实体中的所有字段,还是

  • 问题内容: 我已经阅读了文档。但我仍然不确定何时不需要将其设置为。在下面的代码中,如果将其设置为,则根本看不到标题。如果我将其保留为,那么一切都很好。 View调试层次结构中的以下内容将给出警告“ 宽度 和 位置 不明确”。 我以为只要需要修改代码中的任何内容,都必须设置为。 如果您需要删除其所有约束,然后将其设置为,然后添加所需的内容,则可能是更正确的说法,在这种情况下,您需要为所有四个方面添加

  • 问题内容: 在IPython 3交互式shell中: 那是因为1和True获得相同的插值,所以考虑到集合消除了重复项,所以只有其中一个(True)得以保留?我们如何保持两者? 问题答案: 集合是哈希的集合。即使该语句为False,该语句为True。因此,它们具有相同的哈希值,并且不能单独存在于集合中,并且 不能将它们都保留在集合中 编辑 使其明确,正如jme指出的,这是因为这两个都是正确的-它们相

  • 问题内容: 我一直想知道为什么JDBC API提供了自动提交模式()。似乎很吸引人的麻烦只是诱使人们陷入麻烦。我的理论是,仅将其添加到JDBC是为了简化希望创建使用JDBC编辑和运行SQL的工具的供应商的生活。是否有其他原因打开自动提交,还是总是错误? 问题答案: 不幸的是,使用自动提交是特定于数据库的(事务行为也是如此)。我认为,如果您没有全局的程序化交易策略,自动提交可能比仅希望每个人都正确关

  • 问题内容: 我真的很喜欢将sequelize用作我的节点应用程序的ORM,但是现在,当默认情况下在查询时它们传递DAO对象时,我有点恼火。如何始终将raw选项设置为true? 问题答案: 根据文档: 如果您不提供SQL以外的其他参数,则将raw假定为true,并且sequelize将不会尝试对查询结果进行任何格式化。 话虽如此 : Sequelize对象具有[options.query = {}]

  • 我不得不问这是一个好的做法吗?好心地建议使用它的优点和缺点(利弊)。