PersistenceCapableにインスタンスをキャストしようとすることは失敗しました。強化されていることを確認してください

StackOverflow https://stackoverflow.com/questions/4102294

  •  29-09-2019
  •  | 
  •  

質問

OpenJPA 2.0.1を初めて試していますが、

79  WARN   [main] openjpa.Runtime - The configuration property named "openjpa.Id" was not recognized and will be ignored, although the name closely matches a valid property called "openjpa.Id".
179  INFO   [main] openjpa.Runtime - Starting OpenJPA 2.0.1
371  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.PostgresDictionary" (PostgreSQL 8.4.4 ,PostgreSQL Native Driver PostgreSQL 9.0 JDBC4 (build 801)).
<openjpa-2.0.1-r422266:989424 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance "x.quality.QualityQuery@4c4b11e9" to PersistenceCapable failed.  Ensure that it has been enhanced.
FailedObject: x.quality.QualityQuery@4c4b11e9
    at org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4559)
    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2561)
    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2423)
    at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1069)
    at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:706)
    at ...

によると OpenJPAドキュメント, 、実行時に基本的な強化を得るために何もする必要はないはずです:

2.5。 OpenJPAエンハンサーを省略します

OpenJPAは、エンハンサーを実行する必要はありません。エンハンサーを実行しない場合、OpenJPAは、実行環境に応じて、州の追跡のためのいくつかの可能な選択肢の1つに戻ります。

Java 6クラスの再確認:

Java 6環境でアプリケーションを実行している場合、OpenJPAは、永続的なクラスを再定義して永続的なデータへのアクセスを追跡するクラストランスフォーマーを動的に登録しようとします。さらに、OpenJPAは、永続的なクラスごとにサブクラスを作成します。クエリを実行したり、関係をトラバースしたりすると、OpenJPAはサブクラスのインスタンスを返します。これは、オペレーターのインスタンスが期待どおりに機能することを意味しますが、O.getClass()は、書いたクラスの代わりにサブクラスを返します。この動作を得るために何もする必要はありません。 OpenJPAは、実行環境がJava 6クラスの再確認できるかどうかを自動的に検出します。

なぜこれが機能していないのかについての手がかりはありますか?どうもありがとう...

(Openjpa.idの警告が発生する理由のボーナスポイント - 私はそのようなプロパティを設定していません...)

役に立ちましたか?

解決

ああ、答えは渡すことだったことが判明しました:

"openjpa.RuntimeUnenhancedClasses" => RuntimeUnenhancedClassesModes.SUPPORTED

構成マップまで。なぜこれがより明確に文書化されていないのか、よくわかりません...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top