全て。
私は純粋な JPA を使用してプログラムを作成していました。そのプロバイダーは休止状態であり、基盤となるデータベースは Azure SQL DB でした。このプログラムは分散環境で実行され、その多くのコピーが異なるサーバーで実行されます。
そのような手順を実行する必要があります (ex-):
1、指定された学生エンティティをロックし、
2、クラス エンティティのステータスを確認し、ステータスが 1 の場合は続行し、それ以外の場合は、このクラス エンティティをロックして、取得するまで試行しますこのクラスのロック
3, ステータスのステータスを確認 (分散環境のため、別のサーバーからの別のスレッドによって変更されている可能性があります), それでも 1 でない場合は、何かを実行し、ステータスを 1 に変更します,
4, このクラス エンティティのロックを解除します
5、他のことをします(現在の学生エンティティを引き続きロックします)
次のコード セグメントでロックを取得します。
Map<String,Object> map = new HashMap<String, Object>();
map.put("javax.persistence.lock.timeout", 0);
return this.getEntityManager().find( cls, id, LockModeType.PESSIMISTIC_WRITE,map);
しかし、ステップ4でロックを解放する方法がわかりません。エンティティのロックを解放し、他のロックのままにする方法はありますか?
どうもありがとう、アドバイスは適切に処理されます。