Hibernate EntityManager + JOTM: транзакции не используются
Я пытаюсь объединить JOTM и Hibernate EntityManager для тестирования моих EJB-компонентов в транзакционной среде, но вне контейнера.
Мой тест выглядит следующим образом:
- Начать JOTM
- Поместите пользовательскую транзакцию JOTM в JNDI
- Создайте и настройте StandardXADataSource
- Поместите источник данных в JNDI
- Настроить спящий режим и создать EMF
- Создать EM
- Начать сделку
- Присоединяйтесь к транзакции в EM
- Сохранить сущность
- Убедитесь, что он хранится
- Откат транзакции
- Проверьте базу данных на количество записей
- Снеси все
Вот как выглядит мой код: http://pastebin.com/m22a9f6b
Вот вывод журнала: http://pastebin.com/m6da9383a
Проверка не пройдена на шаге 12 (строка 121).
Как вы можете видеть, несмотря на то, что я откатил транзакцию, в БД есть запись. Похоже на транзакции, где они вообще не используются, и запись попадает в БД.
У вас есть идеи, как это может происходить и как это исправить?
1 ответ
Решение
Я понял, что мне нужно предоставить собственную реализацию ConnectionProvider, которая будет возвращать XAConnection вместо простых соединений. Таким образом, транзакции, кажется, работают