Hibernate EntityManager + JOTM: транзакции не используются

Я пытаюсь объединить JOTM и Hibernate EntityManager для тестирования моих EJB-компонентов в транзакционной среде, но вне контейнера.

Мой тест выглядит следующим образом:

  1. Начать JOTM
  2. Поместите пользовательскую транзакцию JOTM в JNDI
  3. Создайте и настройте StandardXADataSource
  4. Поместите источник данных в JNDI
  5. Настроить спящий режим и создать EMF
  6. Создать EM
  7. Начать сделку
  8. Присоединяйтесь к транзакции в EM
  9. Сохранить сущность
  10. Убедитесь, что он хранится
  11. Откат транзакции
  12. Проверьте базу данных на количество записей
  13. Снеси все

Вот как выглядит мой код: http://pastebin.com/m22a9f6b

Вот вывод журнала: http://pastebin.com/m6da9383a

Проверка не пройдена на шаге 12 (строка 121).

Как вы можете видеть, несмотря на то, что я откатил транзакцию, в БД есть запись. Похоже на транзакции, где они вообще не используются, и запись попадает в БД.

У вас есть идеи, как это может происходить и как это исправить?

1 ответ

Решение

Я понял, что мне нужно предоставить собственную реализацию ConnectionProvider, которая будет возвращать XAConnection вместо простых соединений. Таким образом, транзакции, кажется, работают

Другие вопросы по тегам