Я использую Spring, JPA, используя спящий режим для обслуживания -> dao layer. Сделки управляются весной. У меня есть проверочный тест, в котором мне нужно проверить наличие дубликатов данных и выбросить исключение.Сценарий транзакции Spring Junit4 для сценария проверки
В моей TestCase, что расширение AbstractTransactionalJUnit4SpringContextTests
Я настроил @TransactionConfiguration с defaultRollback как истинное и бобом имя для менеджера транзакций (в моем случае его боб из JpaTransactionManager)
я выполнить эту TestCase как указано ниже, шаги
Создать запись с вызовом dao.create (entity); (Это получится)
Создать же запись (со всеми атрибутами же, как указано в пункте 1) и вызовите dao.create (Entity) (это должно потерпеть неудачу, но его не подведет)
В мой метод create (entity) Я вызываю метод validate(), который запускает скалярный объектный запрос (JPQL) для проверки.
Я ожидаю, что проверка будет неудачной, но это работает без исключения, и дублированные данные вставляются в БД.
Я пробовал отлаживать (включены журналы спящего режима), я обнаружил, что запрос выбора (скалярный запрос) не может получить правильные данные (в идеале он должен извлекать как минимум 1 запись, поскольку я вставил данные для нее в шаге 1, указанном выше .)
Я вижу Вставить запрос для шага 1 в журналах, прежде чем выбрать запрос для проверки.
Есть ли другой способ написать тестовый пример для такого сценария, который включает в себя spring/jpa с гибернацией?
Пожалуйста, сообщите ваши мнения
Заранее спасибо!