2015-01-08 55 views
1

我是一個新手休眠。請讓我知道下面的代碼中有什麼錯誤?hibernate begintransaction拋出異常

f1() 
{ 
    try { 
     s = HibernateUtils.getSessionFactory().getCurrentSession(); 
     tx = s.beginTransaction(); 
     // do some task 
     tx.commit(); 
    } catch(Exception e) { 
     tx.rollback(); 
     throw e; 
    } 
} 

f2() 
{ 
    try { 
     s = HibernateUtils.getSessionFactory().getCurrentSession(); 
     tx = s.beginTransaction(); 
     f1(); 
     tx.commit(); 
    } catch(Exception e) { 
     tx.rollback(); 
    } 
} 

f1()中的begin transaction語句拋出異常。提前致謝。

+0

什麼例外.. ??/ –

+0

不支持嵌套事務。 – Varun

+0

通過調用openSession()而不是使用當前會話來創建一個新的會話來解決它。不管怎麼說,多謝拉。 – Varun

回答

0

您不能同時擁有多於一個的transaction (not session),您的方法已處於事務中,並且您不需要創建一個新的;刪除s.beginTransaction();

或者可以通過相同的transaction,否則創建一個新的。

此處的概念是 - getCurrentSession()返回相同,並且您要撥打beginTransaction()兩次。

+0

但是可能有些情況下f1()可以直接從前端或從另一個函數調用/調用,比如f3(),它沒有beginTransaction()。我們如何處理這些案件? – Varun

+0

@Varun你可能需要有不同的交易,或通過相同的交易。 –

+0

我想我明白了。謝謝。 – Varun