0
私は2つのエンティティがあります。オプトロックとOneToManyのrealtion
Package{
@OneToMany(fetch = EAGER, mappedBy = "package")
private List<PackageVersion> PackageVersions;
}
PackageVersion{
private state;
@ManyToOne(fetch = FetchType.EAGER)
private Package package;
@Version
@Column(name = "optlock")
private Long optLock;
}
バージョンが異なる状態(ドラフト、ライブ)にすることができます。私はパッケージのDRAFTパッケージのバージョンを1つしか持っていません。
問題のシナリオは、複数の同時スレッド(ノード)が新しいDRAFTバージョンを作成しようとしている場合です。彼らは成功するでしょう。
オプティカルロックをパッケージにプッシュしようとしましたが、保存方法に@Lock(LockModeType.OPTIMISTIC_FORCE_INCREMENT)と注釈を付けましたが、それは役に立ちませんでした。
複数のDRAFTの作成を防ぐにはどうすればよいですか?