2012-01-31 1 views
0

Я использую hibernate для подключения к базе данных mysql.Странная вещь об использовании метода saveOrUpdate сеанса hibernate

Мой метод saveOrUpdate является:

public void saveOrUpdate(T t){ 
    Session session = HibernateUtil.getSession(); 
    Transaction transaction = session.beginTransaction(); 
    session.saveOrUpdate(t); 
    transaction.commit(); 
} 

Я использовал этот метод на самом деле около полугода, он работал хорошо. Но теперь, когда я делаю junit-тест с использованием этого метода, кажется, сосать. Сначала я сохраняюOrUpdate, а затем использую критерии для запроса, он получает результат, кажется, прав, но в базе данных ничего не изменилось.

Может ли кто-нибудь, пожалуйста, дать мне какой-нибудь намек на то, что здесь происходит?

спасибо.

ответ

1

Какая у вас конфигурация JUnit для транзакций? Я считаю, что он настроен на откат всех транзакций в тесте. Это должно быть справедливо, так как после теста база данных должна быть возвращена в последовательное/известное состояние. Правильность вашего кода должна опираться на то, как вы пишете тест, а не записи, физически присутствующие в базе данных.

+0

Спасибо за ответ, я не знал, что мне нужно изменить настройку специально для юнита. Могу ли я также спросить, почему, когда я использую hql, он работает хорошо? –

+0

@XuanziHan Вы имеете в виду, почему он работает, когда вы запускаете этот метод в своем приложении? –

+0

Да, и теперь в junit, кажется, иногда работает, иногда застревает. Спасибо –

Смежные вопросы