Я только что столкнулся с этим, когда мои модульные тесты были настроены на откат, и моя запись все еще отображалась в базе данных после завершения теста. Причина заключалась в том, что в DAO в методе был вызван вызов объекта-менеджера flush (), который принудил транзакцию к фиксации.
em.persist (jpaServer);
em.flush (); // фиксирует запись независимо от того, что настроено пружиной
снял флеш и подтвердил отсутствие записи. Протестировал тот же код с тестом, аннотированным @Rollback (false), и подтвердил запись (доказывая, что сброс не требовался)