1

この恐ろしいメッセージのログを (もう一度!) チェックするのを忘れたため、壊れていない新しいコードのデバッグに 30 分を費やしました。

 WARN   openjpa.Enhance - Creating subclass for ...

OpenEJB 3.2 スナップショット ビルド、Java 1.6.0_25、および Eclipse Helios 内で OpenJPA 2.1.0 を実行しています。私のエンティティは、ant PCEnhancerTask を使用して強化されています。

私のMETA-INF/openjpa.xmlには含まれています

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

この EE 構成では、SE 構成の場合と同様に、OpenJPA に RuntimeUnenhancedClasses オプションを強制させることはできますか?

「本当の」問題は、Eclipse svn の更新が JPA エンティティ ソースに影響を与えることがあり、拡張クラスを上書きするビルドが原因であると思われ ます

奇妙な方法で失敗する IDE から単体テストを頻繁に実行することに苛立ちを覚えます。エンハンサーを実行するだけでよいのに、コードを掘り下げて問題を探します。

4

2 に答える 2

0

META <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />-INF/persistence.xml を配置します。

このアクションをデバッグ レベルでログに記録しているように見えますが (おそらく情報レベルである必要があります)、OpenEJB はそのプロパティを OpenJPA 1.x の場合と同様にデフォルトに設定するため、OpenEJB 3.1.x/OpenJPA 1 で動作するアプリは.x は 3.2.x でも変更しなくても機能します。プロパティが persistence.xml で既に設定されている場合、オーバーライドされることはないため、そこに設定すると、必要な効果が得られます。

将来、同じ船に乗っている他の人を救う方法についての提案をお待ちしています。openjpa.xml ファイルを調べて、プロパティが既に設定されていることを確認するか、info でログ メッセージを発行するか、またはその両方を行うようです。

于 2011-09-13T17:40:13.907 に答える
0

コンテナで実行しているときに、なんらかの理由でプロパティが取得されないように思えます。

考えられる解決策がいくつかあります。

  1. META-INF/persistence.xml でプロパティを設定してみてください。何らかの理由で openjpa.xml ファイルにこれらのプロパティがあると思いますが、実際の問題がどこにあるかを突き止めるのに役立つかもしれません。

  2. -Dopenjpa.RuntimeUnenhancedClasses=false を JVM プロパティとして設定します。これは、特定の JVM のすべての PU に適用されます。

  3. >= 2.0.0 の OpenJPA のバージョンに移行します。そのリリースでは、RuntimeUnenhancedClasses がデフォルトの動作としてオフになりました。

于 2011-09-06T15:39:48.603 に答える