2009-07-28 9 views
3

Je dois générer automatiquement l'horodatage lorsque je crée un nouvel enregistrement et que je génère automatiquement l'horodatage modifié lorsque je mets à jour un enregistrement. Quelqu'un peut-il me dire comment implémenter cela? J'utilise OpenJPA.auto générer l'horodatage

merci d'avance.

Répondre

2

Le plus simple est d'utiliser @Version annotation (documentation here)

il suffit d'ajouter ce qui suit à vos entités:

@Version 
private java.sql.Timestamp myTimestamp; 

/// normal getters & setters here 

Et il le fera automatiquement

+0

@Version est utilisé uniquement pour la mise à jour - La date de création sera perdue –

+0

Je suis sûr à 99% qu'il est également utilisé pour la création - sinon comment ferait-il la première mise à jour? Avez-vous des références indiquant que @Version n'est pas mis à jour lors de la création? –

+0

@Version n'est-elle pas utilisée avec le verrouillage? Que faire si vous ne voulez pas utiliser le verrouillage, mais que vous voulez juste un horodatage? –

4

Vous pouvez utiliser le code suivant:

@Column 
@Temporal(TemporalType.TIMESTAMP) 
private Date creationDate; 

@Column 
@Temporal(TemporalType.TIMESTAMP) 
private Date lastModificationDate; 

// getters, setters 

@PrePersist 
void updateDates() { 
    if (creationDate == null) { 
    creationDate = new Date(); 
    } 
    lastModificationDate = new Date(); 
} 
+0

Ne devriez-vous pas inclure @PreUpdate aussi? Ou mettra à jour également fonctionner sur @PrePersist –