Я пытаюсь использовать beforeInsert в своем классе пользовательского домена.
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: нулевой идентификатор в записи (не очищайте сеанс после возникновения исключения), когда метод сохранения объектов домена сталкивается с исключением SQL.
В документации по автоматической отметке времени я прочитал, что не пытайтесь сбросить сеанс внутри события (например, с помощью obj.save(flush:true)). Поскольку события запускаются во время сброса, это вызовет StackOverflowError.
В этом случае, как сохранить мой userInstance.save(flush: true)
Я пытался удалить flush:true
, но все равно получаю ту же ошибку. если я уберу flus:true..то когда мне нужно позвонить. Когда спящий режим сбросит все эти записи.
Я попробовал решение, определенное этот билет JIRA Пожалуйста, помогите мне. Спасибо