gpt4 book ai didi

java - 更新方法不会保存到Grails中的数据库

转载 作者:行者123 更新时间:2023-12-02 15:42:53 27 4
gpt4 key购买 nike

我试图编写一个自定义的自定义 Controller ,使我可以在Grails 3.3.8中处理带有复合键的表。我拥有的一个这样的表称为AliasFrequencyDict,因此我在 Controller 中创建了这样的方法:

@Transactional
def update(AliasFrequencyDict aliasFrequencyDict) {

aliasFrequencyDict = AliasFrequencyDict.get( new AliasFrequencyDict(params) )

if (aliasFrequencyDict == null) {
notFound()
return
}

try {
aliasFrequencyDict.save(insert: false, flush: true, failOnError: true)
} catch (ValidationException e) {
respond aliasFrequencyDict.errors, view:'edit'
return
}

request.withFormat {
form multipartForm {
flash.message = message(code: 'default.updated.message', args: [message(code: 'aliasFrequencyDict.label', default: 'AliasFrequencyDict'), aliasFrequencyDict.getPK()])
redirect(action: 'show', params: params)
}
'*'{ respond aliasFrequencyDict, [status: OK] }
}
}

这似乎应该正常工作-当我在编辑 View 中更改某些内容并提交时,我正确地重定向到 show操作,我收到通知成功更新的Flash消息,URL为 http://localhost:8080/aliasFrequencyDict/show?_method=PUT&version=&frequency=0&unit=Q&description=abc123&lang=PL,但记录中的任何内容均未更改数据库本身。为什么呢?这有什么问题吗?

最佳答案

好的,事实证明,这个问题比看起来要简单得多-在保存之前将参数明确地写入属性就足以解决该问题!因此,我们只需执行以下操作:

...
if (aliasFrequencyDict == null) {
notFound()
return
}

aliasFrequencyDict.properties = params /* <===== here! */

try {
aliasFrequencyDict.save(insert: false, flush: true)
...

...而且有效!

关于java - 更新方法不会保存到Grails中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54922543/

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