mybatis-3.0.1.4とmybatis-spring integration 1.0.1がFuse(OSGi)内にデプロイされています。私はSQLServer 2008の中で基本的なデータベースを作成しました。春に私はTransactionAwareDataSourceProxy
データソースとDataSourceTransactionManager
トランザクションマネージャを設定しました。トランザクションはロールバックされません
私は自分のバンドルを作成して、データベースにいくつかの行を挿入するヒューズ内に配置しました。私は構成されたデータソースとトランザクションマネージャを使用するようにバンドルに指示しました。ロジックを実行するメソッドは、次のようになります。
@Transactional(propagation=Propagation.REQUIRED)
public void go(RecsCashContext context) throws ActionException {
このメソッドが例外をスローすると、トリガーされる期待される動作を見てSpringに従うことができます。これは私にスプリングJtaTransactionManager
とdoRollBack(..)
につながります。
私はデータベースを見ると、以前の挿入がロールバックされていないので不安定な状態にあることを除いて、すべてが有望に見えます。
私はこの1つを失いました。私は情報をオンラインで見つけるのに苦労しています。何かご意見は?
このシナリオでは、実際にトランザクション性をテストする目的でランタイム例外を強制しています。私が言及したように、私はSpringのソースをたどってロールバックが有効であることを確認することができます。 – AndyF
あなたの永続性はすべてgo(...)メソッド内で処理されているのですか、あるいはいくつかの挿入が異なる伝播ルールを持つ別のメソッドで行われていますか? – Fil
同じように...私の懸念は、おそらくmybatisがそれが伝播する各挿入に対して新しいトランザクションを作成していることです。なぜそれがこれを行うのか分かりますが。 – AndyF