Hibernate grails Hibrate discard()被忽略

Hibernate grails Hibrate discard()被忽略,hibernate,grails,gorm,Hibernate,Grails,Gorm,我有一个动作,它修改并引用,然后链接到另一个动作。如果实例上有错误,我希望忽略我所做的更改。但是,discard()方法不起作用。状态更改始终保持不变。我做错了什么 def reject={ def notice=Notice.get(params['id']); if(!notice){ flash.message="Could Not Find Notice With ID:"+params.id; redir

我有一个动作,它修改并引用,然后链接到另一个动作。如果实例上有错误,我希望忽略我所做的更改。但是,discard()方法不起作用。状态更改始终保持不变。我做错了什么

def reject={

        def notice=Notice.get(params['id']);
        if(!notice){
            flash.message="Could Not Find Notice With ID:"+params.id;
            redirect(action:'list');
            return;
        }
        flash.messages=[:];
        flash.errors=[:];
        notice.status=NoticeType.REJECTED;
        if(!notice.hasErrors() && notice.save(flush:true)){
                //success message
                flash.messages.notice_tab=["Notice Was Successfully Flagged As Rejected"];
            }
        }
        else{
            //error message
              flash.errors.notice_tab=[];
            notice.errors.allErrors.each{
                flash.errors.notice_tab.push(it);
            }
            notice.discard(); //THIS DOES NOTHING????
        }


        chain(action:'edit', id:params['id'] )
        return;
    }

我还尝试了notice.refresh()将值设置回原始值。没关系。仍然保留我设置的新值。我将链更改为重定向,同样的情况也发生了。

一种解决方案是使用命令对象而不是域对象。然后,在命令对象上成功完成验证后,可以将值复制到域对象,然后保存以避免Hibernate放弃