2017-12-29 11 views
0

In meiner Entity-Klasse gibt es Felder wie dateCreated und dateUpdated. Um diese Felder automatisch zu aktualisieren, habe ich das Feld dateCreated mit @PrePersist und dateUpdated mit @PreUpdate annotiert. Es hat für mich geklappt. Beim Erstellen einer neuen Entität wird das Feld dateCreated aktualisiert, aber beim Aktualisieren der Entität wird das Feld dateCreated zu null und das Feld dateUpdated wird aktualisiert. Kann mir bitte jemand sagen, warum das passiert?Das Feld für das Erstelldatum wird beim Update ungültig, wenn @PrePersist und @PreUpdate verwendet werden.

Ich verwende Hibernate 4.3.6 Version und JPA 2.0

+0

Können Sie bitte etwas Code zeigen? –

Antwort

0

Die Anmerkungen unter (@PrePersist, @PreUpdate) die Methoden unter ihnen bewirken, vor einer Datenbank einfügen oder aktualisieren aufgerufen werden diese Felder synchron zu halten . Ich lege sie auf eine BaseEntity und erweitere dann BaseEntity auf alle meine Entitäten.

@PrePersist 
protected void onCreation() 
{ 
    dateCreated = Instant.now(); 
    dateUpdated = Instant.now(); 
} 

@PreUpdate 
protected void onUpdate() 
{ 
    dateUpdated = Instant.now(); 
} 

Die oben geht davon aus, dass Sie java.Instant verwenden, aber wenn Sie mit java.Date dann könnte man die folgenden verwenden:

@PrePersist 
protected void onCreation() 
{ 
    dateCreated = new Date(); 
    dateUpdated = new Date(); 
} 

@PreUpdate 
protected void onUpdate() 
{ 
    dateUpdated = new Date(); 
} 
Verwandte Themen