2011-12-15 13 views
2

私はHibernate 3.3.2とmysql 5.0.77(innodbエンジン)を使用しています。 私はSQL操作select、updateなどを実行するたびに、mysql終了時にロールバックを行います(queryin com_rollbackカラムでは、毎回増分しています)。私はこれらの操作を休止状態のトランザクションで行います。 Hibernateは何の例外もスローさせずに正常に完了します。私はmysqlの最後で一般的なログファイルを有効にしたときに、各トランザクションで次のような処理が行われました: set autocommit = 0 クエリの実行(選択、挿入、更新) コミット ロールバック 自動コミット= 1hibernateトランザクションはmysql innodbでコミットとロールバックを引き起こします

なぜコミット後にmysqlの終了時にロールバックが行われているのかわかりません。アプリケーションログとmysqlログにエラーはありません。 。:(

答えて

0

あなたの休止フラッシュモードまたはそのようなことを確認してください、私がここに書いたものを参照してください:。私は春@Transactionnal(読み取り専用=真) それだけではないセットについて話しました migrating from HibernateTransactionManager to JpaTransactionManager

お知らせフラッシュモード、トランザクションが読み取り専用としてマークされている場合、決してへ。 http://www.codeinstructions.com/2009/04/read-only-transactions-with-spring-and.html

、春はFLUSH_NEVERにHibernateのSessionのフラッシュモードを設定し、読み取り専用にJDBC トランザクションを設定します。

とにかく春を使用しているかどうかはわかりませんが、おそらくそれはそうです。 決してフラッシュモードで休止状態のセッションがある場合は、おそらくその問題があります。


それはあなたが上のJDBCドライバにブレークポイントを置くことを試みることの問題ではない場合:私は春を使用していない

Connection.setReadOnly(boolean) 
+0

。フラッシュモードをflush_neverに設定しましたが、それでもなおcome.session.setFlushMode(FlushMode.NEVER); \t \t \t trx = session.beginTransaction(); 。 \t \t \t retObj =(T)session.createCriteria(clazz).add( \t \t \t \t \t Expression.eq(プロパティ、フィルタ))uniqueResult(); \t \t}キャッチ(HibernateExceptionでのEX){ \t \t \t LOG.finer( "休止状態例外:{0}"、EX)。 \t \t \t //trx.rollback(); \t \t \t throw new CpFaultException(clazz.getName()、ex); \t \t} catch(例外e){ \t \t \t LOG.finer( "{0}"、e)を取得中に例外が発生しました。 \t \t \t //trx.rollback(); \t \t}最後に{ \t \t \t HibernateSessionFactory。closeSession(); \t \t} – user1100537

+0

読みにくく、あなたの投稿を編集する方がよいでしょう。セッションをflushmodeに入れないとは言いませんでした。おそらくあなたはAUTOまたは常に入れてみるべきですが、私はそれが問題だとは思わない...あなたはConnection.setReadOnly(ブール値)にブレークポイントを入れ、そのクラス –

関連する問題