Я только что настроил тест, который проверяет, что я могу вставлять записи в свою базу данных с помощью Hibernate. Меня сводит с ума то, что Hibernate фактически не удаляет записи, хотя сообщает, что они пропали!
Тест, приведенный ниже, проходит успешно, но когда я проверяю свою БД, записи, которые были вставлены, все еще там! Я даже пытаюсь проверить это, используя assert (да, у меня есть -ea в качестве параметра vm). У кого-нибудь есть подсказка, почему записи не удаляются?
public class HibernateExportStatisticDaoIntegrationTest {
HibernateExportStatisticDao dao;
Transaction transaction;
@Before
public void setUp(){
assert numberOfStatisticRowsInDB() == 0;
dao = new HibernateExportStatisticDao(HibernateUtil.getSessionFactory());
}
@After
public void deleteAllEntries(){
assert numberOfStatisticRowsInDB() != 0;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
for(PersistableStatisticItem item:allStatisticItemsInDB()) {
session.delete(item);
}
session.flush();
assert numberOfStatisticRowsInDB() == 0;
}
@Test public void exportAllSavesEntriesToDatabase(){
int expectedNumberOfStatistics = 20;
dao.exportAll(StatisticItemFactory.createTestStatistics(expectedNumberOfStatistics));
assertEquals(expectedNumberOfStatistics, numberOfStatisticRowsInDB());
}
private int numberOfStatisticRowsInDB() {
return allStatisticItemsInDB().size();
}
@SuppressWarnings("unchecked")
private List<PersistableStatisticItem> allStatisticItemsInDB(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
transaction = session.beginTransaction();
Query q = session.createQuery("FROM PersistableStatisticItem item");
return q.list();
}
}
Консоль заполнена
Hibernate: delete from UPTIME_STATISTICS where logDate=? and serviceId=?
но при проверке ничего не было удалено.