Grails update()找不到记录,show()和edit()可以

Grails update()找不到记录,show()和edit()可以,grails,db2,Grails,Db2,我有一个针对DB2数据库的相当简单的Grails应用程序。除了我尝试更新记录外,一切正常。show()和edit()能够找到该记录,但更新失败,因为无法找到该记录。以下是编辑: def edit() { def flatAdjustmentInstance = FlatAdjustment.get( new FlatAdjustment(compPayeeID: params["compPayeeID"], effectiveQuarterBeginDate: params["

我有一个针对DB2数据库的相当简单的Grails应用程序。除了我尝试更新记录外,一切正常。show()和edit()能够找到该记录,但更新失败,因为无法找到该记录。以下是编辑:

    def edit() 
{
    def flatAdjustmentInstance = FlatAdjustment.get( new FlatAdjustment(compPayeeID: params["compPayeeID"], effectiveQuarterBeginDate: params["effectiveQuarterBeginDate"]) ) //here are your inbound params

    if(!flatAdjustmentInstance)
    {
        flash.message = "MRI Modifier Record not found with ${params}"
        redirect(action:"list")
    }
    else
    {
        return [ flatAdjustmentInstance: flatAdjustmentInstance]
    }
}
现在更新()

正如我所说的,所有控制器方法/闭包都以相同的方式创建域对象的实例,并且除了update()之外,所有方法都正常工作。有什么想法吗?

.get()
根据现有对象的ID检索该对象。不能将新对象传递给该方法


FlatAdjustment flatAdjustmentInstance=FlatAdjustment.FindByCompPayeId和effectiveQuarterBeginDate(params.compPayeId,params.date(“effectiveQuarterBeginDate”,“INSERTYOURDATEFORMATHERE”)
我发现了这一点,这是一个非常严重的错误。我创建的表单正在传入comppayeid,但由于用户无法编辑该字段,因此我将其从输入更改为文本字段。这意味着不再随grails params对象传入is。我把它改回去,把字段设为只读,现在一切都好了

听起来不错,但是这段代码是默认的Grails脚手架,适用于其他方法。从Grails用户指南-“检索指定id的域类实例。如果指定id的行不存在,则返回null。”我想我需要询问为什么相同的参数用于编辑而不用于更新?对象的ID是
comppayeid
effectivequartebgindate
的组合,正确。在域中定义为id复合:[CompPayeId,effectiveQuarterBeginDate]
def flatAdjustmentInstance = FlatAdjustment.get( new FlatAdjustment(compPayeeID: params["compPayeeID"], effectiveQuarterBeginDate: params["effectiveQuarterBeginDate"]) ) //here are your inbound params
    //def flatAdjustmentInstance = new FlatAdjustment(compPayeeID: params["compPayeeID"], effectiveQuarterBeginDate: params["effectiveQuarterBeginDate"])

    if (!flatAdjustmentInstance) 
    {

        flash.message = message(code: 'default.not.found.message', args: [message(code: 'flatAdjustment.label', default: 'FlatAdjustment'), params])
        redirect(action: "list")
        return
    }