G
Gast2
Gast
Hallo zusammen,
Ich habe eine Eingabemaske um Personen zu speichern/ändern. Wenn nun 2 User einen Datensatz ändern speichert er den Datensatz der zuletzt kommt. Das will ich vorher schon verhindern, in dem es einen Bearbeitungsmodus gibt wo die Felder aktiv sind und indem NUR 1 User drin sein kann und einen lock auf den Datensatz hat.
Ein 2ter User sieht den Datensatz nur als readonly und kanndie Daten lesen aber nicht ändern.
Irgendwie klappt das aber mit dem PESSIMISTIC locking nicht so recht.
1.Wenn ich jetzt ein Objekt mit dem LockType refreshe. Und ein anderer User ein Objekt mit der gleichen ID speichern will, müsste doch eine Exception bekommen oder?
2. Kann man flag im Objekt setzen welches OR Mapper automatisch beim find füllt, dass man weiß ob das Objekt gelockt ist? irgendwie sowas wie readonly? Gibt es sowas oder müsste man so ein Feld selbst füllen?
3. Falls bei 2 nix gibt hab ich mir vorgestellt User 1 klickt auf bearbeiten alle Felder sind aktiv Datensatz wird gelockt. 2 User klickt auf bearbeiten bekommt eine Exception "Anderer User bearbeitet den Datensatz" und kann die Daten nur mit inaktiven Felder anschauen?.
Gruß
Ich habe eine Eingabemaske um Personen zu speichern/ändern. Wenn nun 2 User einen Datensatz ändern speichert er den Datensatz der zuletzt kommt. Das will ich vorher schon verhindern, in dem es einen Bearbeitungsmodus gibt wo die Felder aktiv sind und indem NUR 1 User drin sein kann und einen lock auf den Datensatz hat.
Ein 2ter User sieht den Datensatz nur als readonly und kanndie Daten lesen aber nicht ändern.
Irgendwie klappt das aber mit dem PESSIMISTIC locking nicht so recht.
Java:
public Object find(Class<?> entityClass, Object primaryKey) {
LockModeType lockMode = LockModeType.PESSIMISTIC_WRITE;
return entityManager.find(entityClass, primaryKey, lockMode);
Object object = entityManager.find(entityClass, primaryKey);
entityManager.refresh(object, lockMode);
return object;
}
1.Wenn ich jetzt ein Objekt mit dem LockType refreshe. Und ein anderer User ein Objekt mit der gleichen ID speichern will, müsste doch eine Exception bekommen oder?
2. Kann man flag im Objekt setzen welches OR Mapper automatisch beim find füllt, dass man weiß ob das Objekt gelockt ist? irgendwie sowas wie readonly? Gibt es sowas oder müsste man so ein Feld selbst füllen?
3. Falls bei 2 nix gibt hab ich mir vorgestellt User 1 klickt auf bearbeiten alle Felder sind aktiv Datensatz wird gelockt. 2 User klickt auf bearbeiten bekommt eine Exception "Anderer User bearbeitet den Datensatz" und kann die Daten nur mit inaktiven Felder anschauen?.
Gruß