私のアプリケーションでは、フロントエンドとバックエンドの対話にビューオブジェクトとエンティティのペアが使用されます。フロントエンドはVOのみを使用し、バックエンドはデータベースとエンティティのみを話します。また、VO < - >エンティティの変換ビューオブジェクト - >エンティティ変換中にタイムスタンプが失われる
私のエンティティクラスには、データテーブルの2つの非ヌルカラムに対応する2つのタイムスタンププロパティcreateTimestampとlastUpdateTimestampがあります。しかし、VOにはこれらの2つの特性は決してありません。
私の現在の問題:VOにはタイムスタンプのプロパティが含まれていないため、VOから変換されたエンティティは2タイムスタンプのプロパティを持つことになり、エンティティの更新を行うと、私は許可されていないnullにタイムスタンプ列を設定しようとしています。
私はこの問題をどのように処理するか知りたいです。これら2つのタイムスタンプを更新したり、エンティティを更新する前にタイムスタンプ値を取得する "エレガントな"方法はありますか?私はしばしばワンショットでエンティティのリストを更新する必要があります。私は@Columnアノテーションの下に属性「更新可能」を追加 を発見し、私の問題を解決しているようだ
ソリューション。 すなわち@Column(名前=「CREATE_STAMP」、=更新可能な、偽偽= NULL可能)
がで提供される場合を意味し、タイムスタンプ列のためのDBの列に対するデフォルト値を設定し、このポスト Creation timestamp and last update timestamp with Hibernate and MySQL
これはレコードの作成には役立ちますが、UPDATEにはDBトリガーが必要なので、lastUpdateTimestampは新しい値を取得します。 –
@AndrewSがポイントを獲得しました。それは私を悩ますアップデートです。 – ChrisZ
私はHibernateインターセプタに関するいくつかの調査をしましたが、それは解決策でもあるようです。 –