問題タブ [hibernate-envers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
381 参照

hibernate-envers - Envers 監査エンティティ

監査されたエンティティのリストを取得するより良い方法は何ですか? REVCHANGES テーブルを使用して、このテーブルからすべての監査対象エンティティを検索することは可能ですが、これは最善の解決策ではないと思います。

ありがとう、ヴォロディミール

0 投票する
1 に答える
398 参照

hibernate-envers - Map<>の「変更」の代わりに「追加」+「削除」編集を生成するEnvers

Map<MyEnum, String>監査対象として宣言されたフィールドがあります。マップ内の要素の1つに変更が加えられると、enversは1つではなく、anADDとaの2つの編集を生成します。これは、2つの編集があるため、監査テーブルに挿入しようとしたときに制約違反を意味します。同じリビジョンの単一エンティティの単一フィールドの場合。DELMOD

テーブルのキーの一部を作成することで問題を回避できると思いrevision_typeます(エンティティごとにフィールドごとに各タイプを1回編集できます)が、それは醜いハックのようですが、それを追跡できなくなるという事実もあります最初に起こった、そしてそれがちょうど間違っているという事実。

ちなみに、フィールドは適切に永続化されています...失敗するのは監査レコードだけです。

フィールドの宣言:

Hibernatev3.5.6を使用しています。

これに関するバグレポートを見つけることができなかったので、私は何か間違ったことをしていると思っています...何かアイデアはありますか?

0 投票する
1 に答える
90 参照

hibernate - Hibernate: ロギング用にプロパティを設定する必要があります

Hibernate Envers を使用してログを記録していますが、履歴を追跡しているオブジェクトにイベントのタイプを設定する必要がありました。nullプロパティは必須であるため、設定されていないたびに配置するという考えがありましたlastEvent

そこで、プロパティを設定しようとしました@PrePersist

しかし、どうやら休止状態は、これらのインターセプターがオブジェクトをダーティかどうかとしてマークすると見なします。したがって、このコードがダーティ チェックで実行されたときは、オブジェクトで何も変更されていない場合lastEventModifiedでもfalse、毎回lastEventに設定されます。null

Hibernate の EventListeners でも試してみましたが、それらはトランザクションの外部で実行され、プロパティを設定できましたが、データベースに保存されませんでした。

どちらの解決策も正しくないように感じますが、この問題を最善の方法で解決する方法がわかりません。

0 投票する
1 に答える
112 参照

java - 特定のリビジョン番号に固執する

Hibernate Envers のドキュメントを読みましたが、以下を機能させる方法がわかりませんでした:

Address と Order という 2 つのエンティティがあります。注文には住所があります。

注文が作成されたときに、現在の住所リビジョンに固執するようにしたいので、同じ住所が変更された場合 (新しいリビジョンが生成された場合)、注文は作成時の住所リビジョンを指し続けます。

どうすればこれを達成できますか?

0 投票する
1 に答える
888 参照

java - Hibernate Envers: 日付に基づいて Aud テーブルを切り捨てることは可能ですか?

1) Envers 監査証跡の範囲を制限する方法はありますか?

Envers が最適な 1 週間の監査証跡が必要ですが、その期間を超えたデータ保持に関する契約上の義務もあります。

1.1) RevisionTime に基づいて _AUD テーブルを切り捨てるように envers を設定することは可能ですか?

1.2) 時限クエリを使用してデータベースから直接データを削除すると、休止状態が崩れたり不平を言ったりしますか? または、監査履歴を削除するための代替の API フレンドリーな方法はありますか?

0 投票する
1 に答える
20048 参照

java - Hibernate Envers を使用して結合テーブルと関連エンティティを監査しない方法は?

Hibernate Envers を使用してエンティティを監査しています。

Fooプロパティとしてを持つ監査済みエンティティ が 1 つありList<Bar>ます。Barただし、エンティティを監査したくありません。したがって、私は次のように書きました。

今、私はのリビジョンを取得したいFoo:

残念ながら、すべてのデータを取得したい場合 (つまり、 を遅延ロードする場合)、クエリを実行しようとしたときbarsにエラーが発生します。ORA-00942: table or view does not exist

を使用する@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)と、Hibernate Envers は現在のエンティティのBarアイテムとのリンクを保持すると思いました。

T_BARでは、テーブルとT_FOO_BAR(結合テーブル)を明示的に監査することなく、どうすれば問題を解決できますか? つまり、barsリビジョン エンティティからのリストを取得すると、現在のエンティティから のリストが取得されます (とbarsの間のリンクは監査されないため)。FooBar

ありがとう。

0 投票する
1 に答える
1082 参照

java - envers を使用するコードの Junit を作成するには?

バージョンが維持されているかどうかを確認するためにJUnitを作成します(イベントで)。JUnitを使用して行ったことは次のとおりです。

dao の削除を呼び出すと、

UnsupportedOperationException: 読み取り専用オブジェクトに書き込めません

キャッシュにはEhcacheを使用しています。CacheConcurrencyStrategy問題をグーグルで調べたところ、削除したいドメインオブジェクトの設定が間違っていることが原因である可能性があることがわかりました。私がチェックしました。

ドメイン オブジェクトには がありませんでしCacheConcurrencyStrategyた。しかし、ネストされたオブジェクトは次のようにCacheConcurrencyStrategy設定されていましたREAD_WRITE(これが本当の犯人かもしれません)。

しかし、既存のドメインと既存のコードを変更したくありません。CacheConcurrencyStrategyJUnitをバイパスする方法はありますか? そうでない場合、既存のコードを変更せずに解決する方法はありますか?

0 投票する
4 に答える
11332 参照

java - envers を使用して各エンティティの最新リビジョンを一覧表示する

削除されていないすべてのエンティティの最新リビジョンを取得しようとしています。SQL でこれを行うのは、サブセレクトを使用すると非常に簡単です。

しかし、envers API を介してこれを実装する方法はわかりません。私はAuditReaderから始めましたが、個別のオブジェクトを選択する方法が見つかりませんでした

重要: 多くのリビジョンを含む多くの記事 (エンティティ) があるため、1 つまたは少なくとも 2 つのクエリでこれを実行したいと考えています。

どうもありがとう!

0 投票する
1 に答える
1945 参照

spring - Hibernate rev エンティティに現在のユーザーを挿入する方法

プロジェクトでSpring 3.1、JPA 2、およびSpring Data JPA(Hibenrate 4.1)を使用し、Hibernate Envers(Hibernate 4に付属)を使用していくつかのプロパティを監査しました。現在ログインしているユーザーを関連するrevテーブルに保存したいのですが、どのようにこれを実装するには?ありがとう。

0 投票する
1 に答える
17182 参照

hibernate-envers - Hibernate Envers - org.hibernate.exception.ConstraintViolationException: JDBC バッチ更新を実行できませんでした

監査目的で Hibernate Envar を使用しています。

これが私のコードと構成です

hibernate.cfg.xml ファイルの構成

@Audited で注釈が付けられた 1 つのサンプル エンティティ

ログインしているユーザーの監査をログに記録するための RevisionEntity を作成しました。

ここに私のリスナークラスがあります

挿入/削除の場合、正常に機能します。

ただし、更新クエリの場合、次の例外が発生します

すべてのエンティティの一般的な更新コードは次のとおりです