Hibernate заявление зависает - PullRequest
4 голосов
/ 17 мая 2011

Из моего теста junit я вызываю простой метод для очистки моей таблицы:

    @AfterClass  
public static void runAfterClass() {   
    //Clear db contents after tests         
    // NOTE this clears ALL data from the table
    try {
        System.out.println("deleting db contents");
        HibFunction.clearTable();
    } catch (Exception e) {
        System.out.println("Couldnt delete db contents"); 
        e.printStackTrace();
    }

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

    public static void clearTable()
{
    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction transaction = null;
    try{
    transaction = session.beginTransaction();
    session.createQuery("delete from metadataPoC.hib.TestHib").executeUpdate();
    transaction.commit();
    }catch (HibernateException e) {
        transaction.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }


}

Все довольно простые вещи, однако вывод моей консолине идет дальше:

deleting db contents

Я не уверен, почему именно простой delete from classname

может вызвать такие проблемы.Программа только что зависла на 10 минут без сбоев или результатов теста junit.

Редактировать

Однако я выделил проблему для метода clearTable ()переместил его в коде и как только он вошел, зависает!Я не совсем уверен, почему именно из информации, которую я нашел в Интернете, мой метод кажется правильным из того, что я вижу.Но это должен быть этот метод.Я поместил его в @BeforeClass, и тест просто завис, когда он дошел до него.

В итоге возникла проблема с методом clearTable ().Ты не представляешь, что: (

EDIT 2

отследил проблему до части команды executeupdate по любой причине, по которой она просто останавливается, как только достигает:

ParseUtil.encodePath (String, boolean) line: 100

1 Ответ

4 голосов
/ 17 мая 2011

Вероятно, это тупик между транзакцией метода clearTable() и транзакцией тестового метода.

Убедитесь, что вы завершили (зафиксировали или откатили) все транзакции при выходе из метода тестирования.

...