知識不足で悩んでいます。私は 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の設定ですか?