我正在開發一個使用Hibernate - > MySQL的Java-Web應用程序。嵌套事務雖然同步方法和錯誤處理異常
用戶看到一個JSP頁面,它調用控制器從數據庫獲取數據,並且它具有一個Javascript函數,通過ajax獲取更大的數據字符串。
問題: 當用戶加載頁面後立即刷新頁面,負責AJAX數據的servlet拋出此異常: org.hibernate.TransactionException:嵌套事務不支持
我相信這是由第一次調用導致的,當用戶刷新並執行第二次調用時,該事務仍處於活動狀態。
我標記每個控制器與休眠互動的方法爲同步。 現在用戶能夠刷新1-5次,但是異常仍然發生。
我使用Hibernate 4.3.1。 HibernateUtil.openSession()只是sessionFactory.getCurrentSession();
這是發生異常控制器 - 摘錄:
public static synchronized Widget getWidgetById(long id) {
Widget result;
Session session = HibernateUtil.openSession();
try {
Transaction tx = session.beginTransaction();
try {
result = (Widget) session.get(Widget.class, id);
tx.commit();
} catch (Exception ex) {
tx.rollback();
throw ex;
}
} finally {
//disabled since we use transaction.auto_close_session
//session.close();
}
return result;
}
有沒有,我沒有看到任何錯誤? 這裏有什麼問題?
感謝您的建議,請看看那個! – user2312386