我想在我的用户域类中使用beforeInsert。Grails - beforeInsert在条目中抛出异常null id
class User {
String reEnterPassword
static constraints = {
password(blank: false, nullable: false, size:5..50, validator: {password, obj ->
def reEnterPassword = obj.properties['reEnterPassword']
if(reEnterPassword == null) return true
reEnterPassword == password ? true : ['invalid.matchingpasswords']
})
reEnterPassword(bindable:true, blank: false);
}
def beforeInsert = {
password = password.encodeAsSHA()
}
String toString(){
name
}
static transients = ['reEnterPassword']
}
在我的控制器
我有保存方法(生成)
def save() {
def userInstance = new User(params)
if (!`userInstance.save(flush: true)`) {
render(view: "create", model: [userInstance: userInstance])
return
}
这是抛出异常 Grails的运行时异常,org.hibernate.AssertionFailure:空ID在条目(不刷新会议发生异常之后),域对象保存方法遇到SQL异常时
我在auto timestamping的文档中看到 不要尝试在事件内刷新会话(例如和obj.save一样(flush:true))。由于事件在刷新期间被触发,这将导致StackOverflowError。
在这种情况下如何保存我的userInstance.save(flush: true)
我试图删除flush:true
但我仍然得到相同的错误。如果我删除flus:真..然后当我需要打电话。当hibenate将冲洗所有这些记录。
我试过定义的解决方案this JIRA ticket 请帮我解决。谢谢
任何需要回答问题的事情。请帮助我。谢谢 – vishnu