У меня похожая проблема с человеком, который разместил это сообщение на весенних форумах: http://forum.springsource.org/archive/index.php/t-20943.html
В основном я пишу функцию автоматической регистрации для веб-сайта, на котором я работаю.Если пользователь существует в сторонней базе данных, из которой мы переносим пользователей, а не в нашей БД, то при входе в систему автоматически создается пользователь в нашей БД.
Для этого мне сначала нужно попытаться пройти аутентификацию.пользователь вошел в систему с адресом электронной почты и паролем.Если это не удается, я проверяю стороннюю БД и пытаюсь создать пользователя, используя эту информацию.Как и в приведенной выше ссылке, кажется, что эта проверка существования, сопровождаемая вставкой, приводит к тому, что Hibernate помечает метод как только откат.
Я пытался использовать Transactional require_New при проверке существования, чтобы заставитьновая транзакция, я надеялся, что эта транзакция будет помечена как откат только вместо родительской транзакции, но это не сработало.
Кто-нибудь может посоветовать, как это сделать?Ссылка выше предлагает вставить и использовать ошибку дублирующего ключа в качестве проверки того, что пользователь уже существует, но это кажется грязным и потребует значительного изменения.
Кстати, мы используем Hibernate, Spring и Annotations для обработки транзакций.