2016-07-27 9 views
0

Ich habe eine abstrakte Entity-Klasse erstellt, um nur Audit-Felder zu haben. createdDate und modifiedDate. Ich möchte Hibernate automatisch Werte für diese Felder vom Typ java.lang.Long generieren, wenn entsprechende Abfragen ausgelöst werden.Wie Epochenzeitstempel für Prüffelder in Hibernate Entity generieren?

Ich versuche @CreationTimestamp (org.hibernate.annotations.CreationTimestamp), aber Feder zu verwenden klagt mit following--

Invocation der init-Methode fehlgeschlagen; verschachtelte Ausnahme ist org.hibernate.HibernateException: Nicht unterstützter Objekttyp für Generator Anmerkung @CreationTimestamp

Ich habe auch versucht @Temporal aber das funktioniert nicht mit Feldern vom Typ Long. Ich möchte das Datum nicht in java.util.Date Typ speichern.

Bitte helfen.

Antwort

0

Wenn Sie JPA verwenden Sie können es tun, wie diese

private Long createdDate; 
private Long updatedDate; 

@PrePersist 
protected void onCreate() { 
    createdDate = System.currentTimeMillis(); 
    updatedDate = System.currentTimeMillis(); 
} 

@PreUpdate 
protected void onUpdate() { 
    updatedDate = System.currentTimeMillis(); 
} 

Having said that, warum Sie nicht ein updatedDate wollen ein Datum sein ??? Ich würde darüber nachdenken, es zu einem Date zu machen, nicht zu einem Long.

Siehe Creation timestamp and last update timestamp with Hibernate and MySQL

+0

Vielen Dank für die schnelle Antwort. Ich hatte diese Lösung bereits gesehen, aber ich benutze Session und nicht EntityManager. Ich möchte etwas, das bei 'Session # save' und' Session # merge' ausgeführt wird – shankulk

Verwandte Themen