我想在我的用戶域類中使用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