gpt4 book ai didi

hibernate - Grails的 hibernate discard()被忽略

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

我有一个修改和实例化的 Action ,然后链接到另一个 Action 。如果实例上有错误,我想忽略所做的更改。但是,throws()方法不起作用。状态更改始终保持不变。我究竟做错了什么?

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;
}

我还尝试了notify.refresh()将值设置回原始值。没关系仍然坚持我设置的新值。我将链更改为重定向,并且发生了相同的事情。

最佳答案

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

关于hibernate - Grails的 hibernate discard()被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539072/

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