Так что моя проблема в том, что мои ошибки проверки удаляются из моего объекта домена, прежде чем я смогу отобразить их на странице. Я думал, что исправил эту ошибку в прошлом, но она снова подкралась ко мне.Сессия Grails Hibernate или Spring Сделки, разрушающие ошибки проверки домена
Вот посмотрите на мою первоначальную реализацию. Ошибки сбрасывались при вызове tripService.stepData(trip)
.
Редактировать - я не должен, чтобы я испытал эту проблему только при добавлении страницы в hasMany.
Controller -
Trip trip = tripService.savePrePaymentInfo(params)
if (trip.hasErrors()) {
render(view: "step4", model: tripService.stepData(trip))
}
else {
redirect(action: trip.status.action, id:trip.id)
}
Сервис -
Map stepData(Trip trip)
{
Map returnSet = [:]
returnSet.status = Status.findAllByActionNotEqual("review")
returnSet.trip = trip
returnSet
}
Так что я читал некоторые онлайн и кто-то один на форуме сообщение, как 2 года назад сказал, что что-то в hibernate..possible ошибка ... Я не знаю, но их предложение сработало. Предложение было обернуть контроллер в withTransaction
:
Trip.withTransaction {
//Controller code here
}
Это работает для меня хорошо. Проблема в том, что у меня есть taglib, на мой взгляд, который вызывает снова tripService
. Когда этот вызов выполняется, он очищает мои ошибки проверки. Это действительно расстраивает. Кто-нибудь имеет ЛЮБОЕ представление о том, что я могу сделать, чтобы разрешить это?
Edit: Добавление метода сервис вызывается из TagLib:
String findBannerName(Long pidm, String format = 'LFMI')
{
"abc"
//It really doesnt matter what is here - tried just returning this string and it produced the issue
}
Возможно, это связано с тем, что ваше обслуживание является транзакционным, даже если 'stepData()' is not? Что произойдет, если вы объявите setpData не транзакционным? –
Можете ли вы объявить методы обслуживания не транзакционными, не имея всего этого сервиса? –
Я думаю, что единственный способ, который работает, - установить службу на транзакционное ложное и аннотировать методы, которые должны быть транзакционными. –