2017-03-13 17 views
0

各エンティティテーブルには、作成日または最終更新日を保持するタイムスタンプ列があります。エンティティ間の挿入/更新日(親子)

スプリングデータ、jpa、およびhibernateで、トランザクション内のすべての永続オブジェクトに同じ日付を挿入する簡単な方法はありますか?すべてのオブジェクトに手動で設定する必要はありません。

答えて

0

日付を設定できるorg.hibernate.event.spi.PreInsertEventListenerを書いてバインドします。 PreInsertEventObjectしか公開していないため、エンティティにsetDateメソッドを公開する共通のインターフェイスを実装させる必要があります。

org.hibernate.event.spi.PreUpdateEventListenerを同様に実装して、更新時の日付を更新することもできます。

日付にアクセスするという点では、トランザクションの開始時にローカルのスレッドに設定し、それをリスナーでアクセスすることができます。

0

JPA APIを使用している場合は、@PrePersistアノテーションを見てください。これは、エンティティ(子供のために、またはより良い使用のためにベースエンティティを作成してそこに置く)のメソッドにする必要があります。

@PrePersist 
public void prePersist() { 
if(createDate == null) { 
    createDate = new Date(); 
} 
updateDate = new Date(); 
} 
関連する問題