Ich habe 2 Instanzen:Opt Schloss und OneToMany real
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;
}
Die Version in verschiedenen Zuständen sein kann (Draft, Live). Ich möchte höchstens eine DRAFT-Paketversion für ein Paket haben.
Das Problemszenario ist, wenn mehrere gleichzeitige Threads (Knoten) binden, um eine neue DRAFT-Version zu erstellen. Sie werden Erfolg haben.
werde ich versucht, die opt Sperre Paket zu drücken und speichern Sie die Methode mit Anmerkungen versehen mit @Lock (LockModeType.OPTIMISTIC_FORCE_INCREMENT) aber das half nicht.
Irgendwelche Vorschläge, wie mehrere DRAFT-Erstellung zu verhindern?