1

私は一貫してJPAの閉じた接続の問題に遭遇しています。休止状態 3.0 で春 3.0.5 を使用しています。JPA トランザクション マネージャーを使用してサービスを管理し、REQUIRED 伝播を使用しています。

これが私のシナリオです。

Table A
id    
desc (LAZY)

Table B
a_id

a_id in Table B refers to id of Table A.

エンティティ B を指定してエンティティ A をロードしたい。

Here is what I am doing (roughly) inside the controller:
List<B> list = serviceB.find() ;

for each element - itemB in above list : itemA = serviceA.find(itemB.a_id);
convert itemA to UI bean and set it in model.

REQUIRED 伝播により、サービス内の各 find() メソッドがトランザクション内で実行されると想定しています。ただし、2番目の find() では例外がスローされ、断続的すぎます。接続が閉じていると表示されることもあれば、「トランザクションがアクティブではありません」と表示されることもあり、奇妙なことに、期待どおりに動作することもあります。私を夢中にさせる..

助けてください!

4

1 に答える 1

0

問題は、同じサービス メソッドにアクセスする複数のスレッドにありました。(ajax を使用して) 並列アクセスではなくシリアル アクセスを行うように UI ページを変更すると、これは発生しません。エンティティ マネージャーをマルチスレッド シナリオで動作させる必要があります。

于 2012-06-20T13:20:39.383 に答える