2

Gorm 悲観的ロックの統合テストを試みており、多数のサーバーからのアクセスを同時にマルチスレッド化してシミュレートしていますが、各スレッドで期待どおりの結果が得られません。これは私のコードです:

@Test
void testLockInBetweenCheck() {
def tid = IdocTidInfo.findByTid("AC10870D0E12504F3E88D575") //here tid is not null
withPool{
      [1,2].eachParallel{ tids ->
     IdocTidInfo.withTransaction{ tid ->
        def t = IdocTidInfo.findByTid("AC10870D0E12504F3E88D575") // here is t is null

何が起こっているのかわかりません。Hibernate sessionFactory が各スレッドにバインドされておらず、Domain.withTransaction が動作するはずだと思っていましたが、動作しませんでした。

何か助けはありますか?

4

1 に答える 1

2

これは、メモリ内のデータをブートストラップした統合テストのセットアップ方法に関連していました。それを Bootstrap に移動すると、スレッドからのクロージャーが休止状態のセッションをバインドする可能性があります。とにかく、ありがとう!!

于 2012-09-14T12:48:13.357 に答える