2009-07-28 24 views
3

新しいレコードを作成するときにタイムスタンプを自動的に生成し、レコードを更新するときにタイムスタンプを自動生成する必要があります。自動生成タイムスタンプ

誰でも私にこれを実装する方法を教えてください。私はopenJPAを使用しています。

ありがとうございます。

答えて

2

最も簡単には@Version注釈(ドキュメントhere

ちょうどあなたのエンティティに以下を追加し使用することです:

@Version 
private java.sql.Timestamp myTimestamp; 

/// normal getters & setters here 

をそして、それは自動的に

あなたが使用することができます
+0

@Versionは更新のためにのみ使用されます - 作成日は失われます –

+0

私は99%も作成に使用されていると確信しています - それ以外の方法で最初の更新を行う方法は?作成時に@Versionが更新されないというご意見はありますか? –

+0

@Versionはロックと併用されていませんか?ロックを使用したくないのにタイムスタンプだけが必要な場合はどうなりますか? –

4

をそれを行います次のコード:

@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

@PreUpdateも含めてはいけませんか?または@PrePersistでも更新されます –