Я пытаюсь использовать ExtendedPersistenceContext для реализации шаблона отсоединенного объекта с использованием EJB 3 и Seam.
У меня также есть механизм бизнес-правил, который обрабатывает мой объект при его слиянии на основе данных в базе данных .
Когда что-то не так в бизнес-правиле,приложение запускает исключение, помеченное
@ ApplicationException (rollback = true)
К сожалению, в соответствии с особенностями EJB и этим вопросом из SO Принудительное выполнение транзакциичтобы откатить ошибки проверки в Seam , аннотации заставляют весь объект отделяться.
Таким образом, в основном мой объект находится в том же состоянии, что и раньше (он содержит изменения, сделанные пользователем), но он не может разрешить свои отношения с помощью ExtendedPersistenceContext, поскольку он находится в состоянии Detached.
Это разрывает всю мою страницу, так как у меня есть вызовы AJAX, которые я хочу разрешать даже после сбоя Business Engine.
Я не могу снова объединить объект, иначе изменение будет распространено в БД,и я не хочу делать это, если существует ApplicationException.
Я хочу откатить транзакцию, если проверка бизнеса не удалась, но я хочу, чтобы мой объект все еще находился в постоянном состоянии, чтобы он мог разрешитьего отношения с использованием расширенного контекста постоянства.
Есть предложения?