少なくとも2つの方法で達成できると思います。
データベースのデフォルト値
私は最も簡単な方法は、updateable=false, insertable=false
として列をマークすることだと思う(これはあなたの不変性を与えるだろう - JPAはINSERT
とUPDATE
文にこの列は含まれません)とデータベースの設定列のデフォルト値はNOWです。
JPAライフサイクルコールバックメソッド
他の方法は、実際の日付new Date()
にあなたの日付オブジェクトを設定します@PrePersist
ライフサイクルコールバックメソッドを提供することです。次に、誰もこの値を編集しないようにする必要があります。したがって、このプロパティの設定を行うべきではありません。
エンティティが変更されたときに日付を更新する場合は、同様に実際の変更日を設定するライフサイクルコールバックメソッドを実装できます。
ちょうど(あなたがnew Date(oldDate.getTime());
代わりの平野return oldDate
のようなものを返す必要があります)あなたはDateオブジェクトで作業している場合は、あなたのDateオブジェクトの防衛的コピーを行う必要があることを覚えておいてください。
これは、ユーザーがあなたの日付のゲッターを使用してその状態を変更するのを防ぎます。
データベースは「現在の」日付の値を設定する必要がありますか、またはJPAはそれを行うことができますか? –
@PiotrNowicki - JPAで行うことができます。現在私はアプリケーションコードの中でそれをやっています。 – ripper234