私のシナリオでは、aは 1 日にPLAYER
2 回実行できますACTIONS
(たとえば、1 日に 2 人の他のプレイヤーを攻撃できます)。と の 2 つの永続クラスを実装Player
しAction
ました。Action
クラスには、まさにこのアクションへの参照とPlayer
そのアクションの参照がありDate
ます (日付には、2013-01-15 00:00:00 などの日付部分のみが含まれます)。Action
特定の日付のレコード数を 2 に制限するデータベース レベルの制約を作成したいと考えています。システムは高度に並行しており、アプリケーション レベルのチェックは通常失敗するため、プレイヤーは 3 ~ 4 つのアクションを同時に実行できます。
私の現在の解決策は、 、、へのPlayerDayActions
参照を持つ3 番目のバージョン管理されたエンティティを実装することです。したがって、プレーヤーがすでに実行したアクションの数を確認するかどうかを確認できます。バージョン オンでは、同時に変更されたインスタンスが存在する場合、そのインスタンスを上書きすることはできません。スケーリングするために、action1 と action2 をリストに変更し、そのようなリストを確認できます。player
date
action1
action2
action1 IS NULL
action2 IS NULL
PlayerDayAction
問題に対して、よりクリーンでスケーラブルなソリューションはありますか? Hibernate のプレーン SQL では? ありがとう。