問題タブ [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.
java - HibernateEnversで以前のバージョンのエンティティを取得する
Hibernateによって(経由でEntityManager
)ロードされたエンティティがあります:
このクラスはHibernateEnversによって監査されます。以前のバージョンのユーザーエンティティをロードするにはどうすればよいですか?
java - envers + hibernateの使用を開始する(単純で完全な例)
Hibernateを使用していて、Enversの監査/改訂機能を追加してみたいのですが、何が必要かわからないようです。(私の例はコンパイルして正常に実行され、通常のHibernate機能を取得しますが、データベースに監査テーブルが表示されません。)以前に誰かがこれを行ったことはありますか?HSQLDBダイアレクトを使用するH2データベースで動作しますか?Web上にシンプルで完全なサンプルプログラムはありますか?
編集:少し言い換えさせてください。最後に、ビルドプロセスで.jarファイルを作成し、別のコンピューターにインストールして、適切な.propertiesファイルとJDBCドライバーを使用して、適切なデータベースを作成(または作成できるようにする)したいと思います。テーブルがまだ存在しない場合。これどうやってするの?
編集:これまでのところ、Jamie Bが提案したantタスクを実行する場合は、クラスパスを微調整して、Hibernateツールのzip内に埋め込まれているenversjarファイルとhibernate- toolsjarファイルを見つける必要があります。そして、私はまだ物事が機能していない。もしそうなら、多分それならSQLファイルを作成し、それを最終的な.jarファイル内のリソースとして置くことができ、それをプログラム自体の中から使用できると思います。(セキュリティの問題を考えていると頭の中で赤い旗が消えますが...うーん....)
java - EnversリビジョンテーブルにHibernateエンティティからの既存のデータを入力します
既存の休止状態のエンティティにエンバーを追加しています。監査に関してはすべてがスムーズに機能していますが、リビジョンテーブルに既存のデータが入力されていないため、クエリは別の問題です。他の誰かがすでにこの問題を解決しましたか?リビジョンテーブルに既存のテーブルを追加する方法を見つけたのではないでしょうか。私が尋ねると思っただけで、他の人がそれが役に立つと思うと確信しています。
java - org.hibernate.tool.ant.EnversHibernateToolTask を実行しようとすると、多くのつまずきブロックが発生します
Enversのかなり簡潔なガイドで提案されているように、org.hibernate.tool.ant.EnversHibernateToolTask を実行しようとしています(表の 2 行目、ドキュメントには PDF へのリンクがあります)。org.hibernate.tool.ant.EnversHibernateToolTask と org.hibernate.tool.ant.HibernateToolTask を正常に検出するように微調整した ant タスクを次に示します。今は org.apache.tools.ant.Task を見つけることができず、何か間違ったことをしているような気分になります。
これまでカスタム ant タスクを実行したことがないため、非常に単純なものが欠けている可能性があります。助言がありますか?hibernatetool タスクのクラスパスに何を入力すればよいかわかりません。これは、初歩的な javadoc以外のドキュメントが見つかりません。
編集:わかりました、この断片にたどり着くためのいくつかの特定の質問...
- どの jar ファイルが入っている
org.apache.tools.ant.Task
はずなのですか?なぜ ant はそれを見つけられないのですか? - HibernateToolTask の使用方法に関するドキュメントはどこにありますか? (EnversHibernateToolTask は同じように動作すると思われます)
更新(2009-06-18): OK、ついに勇気を振り絞ってこれを少し進めようと試み、少し前進しました。次の 2 つのことを行うことで、ほぼ機能するようになります。
ant schemaexport
Eclipse 内からではなくコマンド ラインから実行して、ターゲットschemaexport
を実行します。(Eclipse の ant は org/apache/tools/ant/Task を見つけることができないようで、Eclipse で Ant クラスパスを設定する方法がわかりません (taskdef 項目のクラスパスとは異なります。どういうわけか、ant に指示する必要があります)。カスタムタスクを実行するときに、クラスパスを使用して独自のいまいましいクラスを見つけます.これは正気ではありません.... grrr...)/lib/ext
JREのディレクトリに貼り付けることで、クラスパスにすべてのjarが含まれていることを確認します。- envers-1.2.0.ga-hibernate-3.3.jar
- hibernate3.jar
- hibernate-tools.jar
- slf4j-log4j12-1.5.6.jar
- slf4j-api-1.5.6.jar
- log4j-1.2.15.jar
今、私は新しい問題を抱えています:
BUILD FAILED C:\deka\proj\java\test-database\build.xml:61: JPA の構成の作成中に問題が発生しました。hibernate EntityManager jar をクラスパスに追加したことを覚えていますか?
[[[[[悲鳴]]]]]
更新私も必要だったようです
- hibernate-entitymanager.jar
- hibernate-annotations.jar
そして、私はまだクラスローダーエラーを受け取ります:
J2EE サーバーを使用せずにこれを実行するにはどうすればよいですか?!?!?!?!?!? 他にどのような JAR ファイルが必要ですか? 私は本当に混乱してイライラしています。
更新(2009-06-23):ようやくビルドに成功しました。必要なようです:
そして使用することを確認しました
<jpaconfiguration>
サンプル Ant タスクに含まれるアイテムの代わりに。それでも正しく動作しませんが、envers テーブルが含まれていません。:(
java - 単純なenversの例を機能させるのが難しい:問題#34
簡単なenversの例を機能させようとしています。Javaコードが(明らかに)機能していて、ついにorg.hibernate.tool.ant.EnversHibernateToolTaskが機能するようになりましたが、バージョン管理データではなく、「通常の」データのSQLのみが出力されます。私は次に何をすべきか困惑しています。
何を含めるのを忘れている可能性がありますか?
出力されるSQLは次のとおりです。{versioning-ddl.sql}
履歴テーブル/フィールドが表示されません。これが私のhibernate.cfg.xmlファイルの関連エントリです:
およびJavaクラスの関連部分:
hibernate - ENVER の REVINFO にカスタム ログ データを追加できない
監査証跡の実装に Envers を使用しようとしています。監査テーブルPerson_AUD
を作成し、監査データも入力しています。しかし、Envers によって更新されるカスタム フィールドを追加しようとしても、何も起こりません。
hibernate-envers - アノテーションが存在する場合、EnversのEntityManagerFactoryの作成中にエラーが発生しました
Enversは簡単に見えます。persistence.xml
(eventlisteners)に休止状態のプロパティをいくつか追加し、監査するエンティティに注釈を付けるだけです。
Hibernateを使用するアプリケーションでこれをテストしています。ここにいくつかのpom情報があります:
- org.hibernate.hibernate-entitymanager:3.4.0.GA
- org.hibernate.hibernate-annotations:3.4.0.GA
- org.hibernate.hibernate:3.2.6.GA
- org.jboss.envers.jboss-envers:1.2.1.GA-hibernate-3.3
アノテーションを挿入しない場合、アプリのコンテキストは正常に読み込まれます。しかし、挿入すると、EntityManagerFactoryを構築できません。
どんな助けでもいただければ幸いです。
java - HibernateTemplate は Envers で動作しますか? もしそうなら、どのように?
Hibernate と Spring も使用するプロジェクトで Envers を使用しようとしています。HibernateTemplate によって提供されるコード削減に感謝しています。
JPA で Envers を構成し、いくつかの調整を行った後、EnversHibernateToolTask Ant タスク (監査テーブルを含む) によってスキーマを生成することができました。ただし、次のようなコードを書くと:
データは永続化されますが、監査テーブルには何も送られません。逆に、私が書くと:
その後、データは監査テーブルに送られます (ただし、以前の構文を使用したい - JPA の EntityManager を使用すると、そのコードが Hibernate から分離されることはわかっていますが、単純に面倒な作業が報われるわけではありません - ORM エンジンを変更することは、これに対する私の夢ではありません事業。)
applicationContext.xml
構成を確認すると役立つ場合があります。
ここに私のpersistence.xml
セットアップがあります:
ここで何が起こっているのかについてのヒントはありますか?ありがとうございました!
java - org.hibernate.envers.event.AuditEventListener.generateBidirectionalCollectionChangeWorkUnits(...) での NullPointerException
Envers を使用して、エンティティのさまざまなフィールドを監査しています。フレームワークは一般的に機能しますが、ある種のエンティティ マッピングに問題があるようです。以前の問題はすべて自分で解決できましたが、今回は行き詰まりました。
データベースにエンティティを挿入すると、次の例外が発生します。
これは、flush() 中に起動され、複雑なアプリケーションが 1 つの大きなトランザクション内にさまざまなエンティティを挿入するためです。
その例外の直前に起動する HibernateEventListener を使用しています...そのエンティティが原因だと思います。persistence.xml は次のように構成されます。
これが当てはまる場合、エンティティは次のとおりです (抜粋):
誰かがどこを探すべきか考えていますか? Envers を無効にするとすぐに、すべて正常に動作します。しかし、変更の履歴を生成するには envers が必要です。