0

知識不足で悩んでいます。私は OpenJPA を JPA 実装として使用し、Tomcat サーバーを使用してアプリケーションを実行します。また、IDE として Idea12 を使用します。

私にはタスクがあります-ビルド時にopen jpa拡張を提供します-時間。それを実現するために、まず最初に、このプロパティを persistence.xml に追加して、OpenJPA が実行時にエンティティを拡張することを拒否します。

<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>

私が望むように、OpenJPA は実行時にクラスを強化しません。

その後、ant-build.xml に拡張用のターゲットを記述します。正常に動作し、コンパイルされたクラスを含む /build ディレクトリを作成します。コンパイルされた classe コードを見ると、OpenJPA 用の追加フィールド (pcStateManager など) が表示されます。わかりました、それは素晴らしいです。

そして今問題 - Idea 経由で Tomcat を起動すると、強化されたクラスが使用されません。Tomcat は、私が自分のクラスを強化したことさえ知らないと思います。彼はコードを再度コンパイルし、拡張されていないクラスでアプリケーションを開始したようです。確かに、データベースで作業を開始するときは例外があります。

それで、Tomcat を設定して、/build ディレクトリから私のクラスを取得することは可能ですか?

PS拡張のためにいくつかのIdeaプラグインも使用しようとしましたが、問題は解決しませんでした.クラスが拡張されていないという同じ例外がありました.

upd 2 つの拡張アイデア プラグイン: OpenJPA エンハンサーと OpenJPA 拡張機能を使用した Data Nucleas 統合は問題を解決しません。だから、何かがうまくいかないのだと思います。多分主な問題はTomcatの設定ですか?

4

1 に答える 1

0

誰かが興味を持っている場合 - ここに解決策があります:

  1. Idea # Project Structure を開いて、クラスを含むモジュールを選択する必要があります

  2. 「出力」プロパティを「プロジェクトのコンパイル出力を継承する」から「モジュールのコンパイル出力パスを使用する」に切り替え、拡張クラスでディレクトリを指定する必要があります

  3. 以上で、Tomcat が WAR ファイルをビルドするときに、強化されたクラスが取得されます。幸運を。

于 2013-07-04T16:32:10.910 に答える