gpt4 book ai didi

mysql - Grails:当域类包含 'version false' 时,数据库行更新会静默失败

转载 作者:行者123 更新时间:2023-11-29 16:56:40 25 4
gpt4 key购买 nike

我使用的是 grails v3.2.9

我有一个包含

的域类 Offer
static mapping = {
version false
}

我在 offer 表中插入一行,然后在另一个事务中我尝试更新该行内一列的值,但是 offer 更新默默失败,而其他事务则失败同一事务中的实体已正确更新。

我按如下方式保存报价:

offer.save(failOnError: true)

所以当验证失败并且保存失败时,它不是 offer.save() 的情况。

但是,如果我将 version 列添加到 offer 表(dbCreate 设置为 none)并更改提供要包含的域类

static mapping = {
version true
}

该行开始成功更新。

当我检查 audit_log 中的 offer 表时,只有插入事件,没有任何 update 事件。

这很奇怪,因为我有其他包含 version = false 的域类,并且更新那里工作正常。

如有任何帮助,我们将不胜感激。

最佳答案

由于 version = false,属性 Offer.version 等于 null,并且数据库中不存在该列。通常,当您执行更新时,Hibernate 会自动根据数据库中的版本列检查版本属性。所以,我只是猜测这可能是休眠 session 尝试检查空值的错误。我尝试复制你的场景,但没有成功。

您是否尝试在保存时刷新 session ?:

offer.save(flush: true, failOnError: true)

关于mysql - Grails:当域类包含 'version false' 时,数据库行更新会静默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52522063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com