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