2012-01-31 49 views
0

我正在使用hibernate連接到mysql數據庫。關於使用hibernate會話的saveOrUpdate方法的奇怪之處

我saveOrUpdate方法是:

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

我居然用這種方法大約半年,效果不錯。 但現在當我用這種方法做junit測試時,它似乎很糟糕。 我先saveOrUpdate然後使用Criteria進行查詢,它得到的結果似乎是正確的,但在數據庫中沒有任何實際的變化。

任何人都可以給我任何關於這裏發生的事情的暗示嗎?

非常感謝。

回答

1

您的JUnit配置設置爲交易?我相信它設置爲回滾測試中的所有事務。它應該是正確的,因爲在測試之後,數據庫應該恢復到一致/已知的狀態。代碼的正確性應該取決於你如何編寫測試,而不是數據庫中物理存在的記錄。

+0

謝謝你的回答,我不知道我必須專門爲junit更改設置。我也可以問爲什麼當我使用hql時,它運行良好? – 2012-01-31 23:24:57

+0

@XuanziHan你的意思是爲什麼它在你的應用程序中運行這個方法時起作用? – 2012-01-31 23:33:04

+0

是的,現在在junit,它似乎有時工作,有時會卡住。謝謝 – 2012-01-31 23:45:16