問題タブ [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.
hibernate - DoctrineのHibernateEnvers?
Doctrine 1.xと2はどちらも、時間の経過に伴う変更を追跡する個別の監査テーブルの形式で、ある種のバージョン管理可能なサポートを提供します。ただし、バージョンは、すべての行に一意のリビジョン番号を与えるHibernate Enversのように、データベース全体ではなく、行ごとの使用を目的としているように見えます(つまり、すべて独自のバージョン番号を維持します)。
Doctrineは実際にその種の行動をサポートしていますか?私はそれがそうすることを示唆するものをオンラインで見つけることができませんでした。
hibernate - Hibernate Envers構成エラーをどのように解決しますか?
こんにちはここで私はすべてのモデルクラスに休止状態のhbmファイルを使用しています。次に、そのクラスの詳細を監査する必要があります。HibernateEnversを使用しようとしました。@Audited
アノテーション付きの新しいクラスを作成しました。次にhibernate.cfg.xml
、新しいクラスとEnversConfiguration <listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/
(>など)を使用して構成しました。
私がapacheを始めている間、私は
Beanプロパティ'sessionFactory'の設定中に、Bean'sessionFactory'への参照を解決できません。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:ファイルで定義された「sessionFactory」という名前のBeanの作成中にエラーが発生しました
私は休止状態のエンバーズに非常に慣れていません...私はそれをグーグルで検索しました...しかし私は理解できませんでした...誰かがそれをどのように愛するか私を助けることができます...
前もって感謝します
java - Hibernate Envers では、特定のリビジョンのすべてのエンティティをクエリできますか?
2 つの問題を解決するためにHibernate Enversを検討しています。まず、監査です。2 つ目は、リビジョンで行われた変更をロールバックする機能です。これはによって実装されます
- リビジョンで変更されたすべてのエンティティを見つける
- 各エンティティの対応する以前のバージョンを見つける
- 行った変更を効果的に元に戻す新しいバージョンを作成する (new->delete、delete->new、update->update)
- 新しいオブジェクトをコミットする
ただし、特定のリビジョンのエンティティのリストを照会する方法がわかりません。グローバルレベルではなく、クラスレベルでそれを行うメソッドがあります。これは可能ですか?
java - フィールド値を変更せずに更新した場合、Hibernate Enversは監査テーブルのリビジョンを作成しますか?
現在、休止状態のエンバーをテストしていますが、その動作に混乱しています。変更を加えずに更新を行うと、監査が記録されない場合があります。しかし、現在はそうです。確認するのと同じように。
java - Hibernate Envers: カスケード削除の監査テーブルに削除エントリがない
Hibernate envers を使用して、データベース オブジェクトに加えられたすべての変更を追跡しています。これらのオブジェクトは、(一方向の) 親子関係によって関連付けられることがあります。削除されたすべてのオブジェクトをリストすることになっているクエリが必要なので、envers の監査テーブルに依存して、削除されたオブジェクトをマークします (*_aud テーブルの revtype 列)。ただし、これらのエントリは、親オブジェクトが削除されたときに子オブジェクトに対して作成されないようです。
私のオブジェクトクラスは次のようになります。
どういうわけか休止状態の環境をバイパスするカスケード削除アクションと関係があると思われます。参照された親が削除されたときにすべての子がデータベースによって自動的に削除されることを確認しながら、子オブジェクトの監査テーブルのエントリが作成されるようにするにはどうすればよいですか?
hibernate - Hibernate-Envers->属性の監査/バージョン管理。ただし、値が変更された場合のみ
Hibernate-Enversに問題があります。0、1、2、3、4、5のいずれかになり得る監査済み属性が1つしかないドメインオブジェクトがありますstatus
。
現在、EnversとHibernateのすべてが機能しています。Item_AUD
新しいItemオブジェクトを作成してデータベースに追加すると、データベーステーブルに行が挿入されます。
しかし今、私はそれを更新することに問題があります。HibernateDao実装での私の更新は次のようになります。
更新のたびに、これは私のコンソールに出力されます。
しかし、問題は、に行を挿入したいだけでREVINFO
、Item_AUD
ステータス番号が変更された場合です。
例:description
アイテムのを変更し、呼び出しを使用して更新を実行してupdateItem
から、Enversが監査テーブルに新しいリビジョンを書き込みます。しかし、私はこの振る舞いを望んでいません。
必要なもの:の値status
が変更された場合にのみ、Enversはデータベースエントリを監査テーブルに書き込む必要があります。
しかし、どうすればこれを行うことができますか?
よろしく、ティム。
hibernate - Hibernate hbm ファイルの @Audited アノテーション
アプリケーションで Hibernate を orm として使用しています。
今、それを Envers と統合したいと考えています。現在、hbm ファイルを使用してエンティティを生成しています。その場合、生成クラスに @Audited アノテーションが必要であることを hbm ファイルでどのように言及できますか。
ありがとう、
ナレンドラ
hibernate - CREATE(0) では @OneToMany 監査を有効にするが、DELETE(2) では無効にしない
http://community.jboss.org/message/580407#580407のような同様の問題をいくつか調べましたが、まだ解決策が見つかりません。
アクティビティには多くのオカレンスがあり、オカレンスが作成されると、activity_occurence_AUD テーブルが 0 (作成) リビジョンで正しく更新されます。
ただし、オカレンスが削除されると、activity_occurence_AUD テーブルに 2 (削除) リビジョンが取り込まれません。
活動エンティティ:
休止状態のプロパティ:
どんな助けでも大歓迎です。
更新が機能するのに削除が機能しないのは奇妙です。
さらに情報を提供できるかどうか教えてください。
hibernate - HibernateTemplateを使用してSpringでHibernateEnvers
Spring環境でEnversをセットアップしようとしています。SessionFactoryから手動でセッションを取得し、すべてをトランザクション内に配置すると、すべてが正常に機能します。
上記のコードは、データをTestEntityテーブルに挿入し、AUDテーブルとREVINFOテーブルも更新します。
ただし、DAOを使用してテーブルを更新すると、Envers固有のテーブルには何も起こりません。理由はDAOでHibernateTemplateを使用しているのではないかと思います。
SessionFactoryのSpring-configは次のようになります。
Envers FAQからリンクされている、これを含むフォーラムやブログのエントリをかなりたくさん読んだことがありますが、私の状況では何も機能していないようです。
(JPAの代わりに)HibernateTemplateを使用してSpringと連携するようにEnversを構成できるかどうか誰かが知っていますか?構成のどの部分を変更する必要がありますか?このコンテキストでHibernateドキュメント/APIのどの部分を見る価値がありますか(私はまだHibernateの専門家ではないのではないかと思います)?誰かが動作する構成のコードサンプルを提供できますか?
Spring3.0.1とHibernate3.5.1を使用しています。
java - forRevisionsOfEntity が遅い
次を使用して、タイムスタンプより大きいクラスのすべてのリビジョンに対してクエリを実行しています。
これは@ManyToOne
、クエリを使用して参照オブジェクトを再作成しています。
このクエリは信じられないほど遅く、1 つのエンティティだけで 100 分以上かかります (実際、これを書いている現在も実行中です)。エンティティの最後のリビジョン (DEL リビジョンを除く) を取得しているのはなぜですか? を使用する方がはるかに高速ORDER BY REV LIMIT 1
です (または を持たないデータベースの場合は同様ですLIMIT
)。これは遅すぎるので、私はほとんどまっすぐにSQLに行きたいと思っています。また、クエリのテーブル ID を参照する代わりに、サブクエリ内で直接 ID を使用することで高速化することもできます。DTYPE
、REV
およびにインデックスがありREVTYPE
、id に一意のキーREV
があるため、インデックス作成の問題ではありません。
上記のクエリを使用して参照されたオブジェクトを再作成する理由がわかりません。洞察をいただければ幸いです。これは、Pentium 4 マシン上の MySQL 5.1 データベースにありますが、デュアル コア マシンでもかなりの時間がかかります。