3

Hibernate envers 3.6.3.Final を使用しています。テーブルを監査でき、テーブルに、およびエンティティ データ_auditが入力されていることがわかります。すべてのリビジョン エントリを表示する履歴ページを作成しているため、ユーザーがリビジョン ID をクリックすると、エンティティ データをリビジョン タイプと共に表示できます。つまり、追加、削除、または変更されます。を使用しようとしていますが、特定のリビジョンおよび特定のエンティティ クラスの情報を取得する方法がわかりません。で可能ですか?revision_numberrevision_typeAuditQueryrevision_typeAuditQuery

Hibernate クエリを記述することで、「RevisionType」情報を取得できます。しかし、これには既存のフレームワーク API を再利用したいと考えています。別の方法では、基準として異なる 'RevisionType' を渡しAuditQuery (つまり、DELETE、INSERT、および UPDATE の複数のクエリ)、結果が得られるかどうかを確認しましたが、これは効率的な方法ではありません。

4

1 に答える 1

4

今の価値のために。同じ問題があり、次のようにAuditQueryCreator#forRevisionsOfEntityメソッドを使用してリビジョン タイプを取得できました。

List<Object[]> resultList = auditReader.createQuery()
    .forRevisionsOfEntity(entityClass, entityClass.getName(), false, true)
    .add(AuditEntity.revisionNumber().eq(revision)).getResultList();

これは、指定されたリビジョンに関する変更の配列トリプレットのリストを返します。配列トリプレットには、エンティティ、エンティティ情報、および最後にリビジョン タイプが含まれます。

AuditQueryCreator#forRevisionsOfEntityのselectEntitiesOnly引数をfalse設定してください。trueに設定すると 、メソッドはエンティティ オブジェクトのリストのみを返します。

ここでは Hibernate Envers バージョン 4.2.2 が使用されています。

于 2013-10-01T07:57:21.477 に答える