1

私はjpaと休止状態で作業しており、JPAが管理する各アイテムの作成/更新/削除時間を保存しようとしています。

Hibernate Envers のようなものが必要ですが、すべてのリビジョンではなく前回だけを保存し、そのデータを別のテーブルに保存したいと考えています (このデータはアイテム自体の一部ではなく、必要なオプションの同期プロセスに属しているため)各アイテムの最終変更時刻を知るため)。

現在、jpa @EntityListeners を使用してすべてのイベントをキャプチャできますが、これらの情報をデータベース テーブルに永続化する方法がわかりません。item_history テーブル エンティティを定義したくはありませんが、envers のように実行時に生成してアクセスします。

それは可能ですか?

4

1 に答える 1

1

Hibernate インターセプターを使用して、エンティティに対する DML 操作をキャプチャし、必要なデータを別のテーブルに保存できます。

この例を確認してください

新しいエンティティをマップして履歴レコードを保存したくない場合は、ネイティブ SQL を実行してデータをコピーするか、PL/SQL プロシージャを呼び出します。例:

Table table = Entity.class.getAnnotation(Table.class);
String tableName = table.name();
Query query = session.createQuery("insert into " + table + "_HIST" +
            "SELECT * FROM " + table ;
int result = query.executeUpdate();
于 2012-09-03T17:17:00.967 に答える