JPA-@Transient-Felder werden gelöscht, bevor die @PreUpdate-Methode aufgerufen wirdJava

Java-Forum
Anonymous
 JPA-@Transient-Felder werden gelöscht, bevor die @PreUpdate-Methode aufgerufen wird

Post by Anonymous »

Ich habe eine Benutzerentitätsklasse, für die ich Passwort-Hashing durchführen möchte. Ich dachte, der einfachste Weg, dies zu tun, bestünde darin, ein mit @Transient annotiertes Passwortfeld und ein gehashtes Passwortfeld zu erstellen, das direkt vor der Beibehaltung des Objekts mit einer mit @PrePersist und @PreUpdate annotierten Methode festgelegt wird.

Also habe ich so etwas:

Code: Select all

@Transient
private String password;

private String hashedPassword;

@PrePersist
@PreUpdate
private void hashPassword() {
if(password != null) {
hashedPassword = PasswordHasher.hashPassword(password);
}
}
Dies funktioniert einwandfrei, wenn eine Entität beibehalten wird. Das Passwortfeld ist zum Zeitpunkt des Aufrufs von hashPassword noch festgelegt und ein Wert für hashedPassword wird berechnet und gespeichert.

Das Gleiche gilt jedoch nicht für ein Update – selbst wenn ein neuer Wert für das Passwort unmittelbar vor dem Zusammenführen der Entität festgelegt wird, ist das Feld zum Zeitpunkt des Aufrufs von hashPassword null. Warum ist das so? Sollten die Werte transienter Felder nicht zumindest so lange bestehen bleiben, bis die Entität beibehalten wird?

(Ich verwende übrigens EclipseLink 2.0.0, falls es einen Unterschied macht)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post