0

Spring.Net の AbstractTransactionalDbProviderSpringContextTests クラスを拡張し、このようなことをしようとするテスト ケースを作成しました。

Step.1 MyHibernateDao.Find(id)
Step.2 Use SqlConnection API to insert some record into database.

step.1 または step.2 のどちらでも正常に実行できますが、それらを組み合わせると、step.2 は永久に (タイムアウトまで) ハングします。

次のステートメントを追加すると:

Step.1 MyHibernateDao.Find(id) //My Find method does not have [Transaction] annotation.
SessionFactory.GetCurrentSession().Flush()
SessionFactory.GetCurrentSession().Close()
Step.2 Use SqlConnection API to insert some record into database.

step.1 と step.2 の両方が正常に実行できます。もちろん、セッションは既に閉じられているため、破棄は失敗します。

テストが step.2 でハングするのはなぜですか? ある接続が別の接続が戻るのを待つ必要がある、またはテーブルロックなどを待つ必要があるという理由はありません。単に読み取られるだけです。

私はここで混乱しています、何か考えはありますか?

前もって感謝します。

4

1 に答える 1

0

Spring.NET のトランザクション管理または NHibernate を使用していますか? セッション ファクトリの構成を確認する必要がある場合があります。

于 2011-07-07T16:39:35.817 に答える