私は、Hibernate - > MySQLを使用してJava-Webアプリケーションを開発しています。ネストされたトランザクション同期メソッドとエラー処理の例外の例外
ユーザはJSPページを見ると、コントローラを呼び出してDBからデータを取得します。また、ajaxを介してより大きなデータ文字列を取り出すJavascript機能も備えています。
問題: ユーザーがページをロードした後、ページ右側をリフレッシュすると、Ajaxのデータを担当するサーブレットは、この例外をスロー: org.hibernate.TransactionException:ネストされたトランザクションは
をサポートしていない、私は信じていますこれは最初の呼び出しからのトランザクションによって引き起こされます。これは、ユーザーが更新して2番目の呼び出しが実行されたときにはまだアクティブです。
私は、休止状態の相互作用を持つすべてのコントローラメソッドにと同期してとマークしました。 ユーザーは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;
}
は、私が見didntのミスはありますか? ここで何が問題になりますか?
おかげさまで、ありがとうございました! – user2312386