Hibernate EntityManager + JOTM: транзакции не используются - PullRequest
1 голос
/ 27 августа 2009

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 09 сентября 2009

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

...