Intento de ejemplo yeso para PersistenceCapable falló. Asegúrese de que ha sido mejorada

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

  •  29-09-2019
  •  | 
  •  

Pregunta

Estoy probando OpenJPA 2.0.1, por primera vez, y estoy haciendo:

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 ...

Según los documentos OpenJPA , que no debería tener que hacer cualquier cosa para conseguir la mejora básica en tiempo de ejecución:

  

2,5. Omitiendo el OpenJPA potenciador

     

OpenJPA no requiere que el   potenciador de ser ejecutado. Si no se corre el   potenciador, OpenJPA caerá de nuevo a   una de varias alternativas posibles   para el seguimiento del estado, dependiendo de la   entorno de ejecución.

     6 clase

Java   retransformación:

     

si está ejecutando   su aplicación en un 6 de Java   medio ambiente, OpenJPA intentará   registrar dinámicamente una   ClassTransformer que redefinirá   sus clases persistentes sobre la marcha de   realizar un seguimiento de acceso a datos persistentes.   Además, se creará un OpenJPA   subclase para cada uno de su persistente   clases. Cuando se ejecuta una consulta o   atravesar una relación, OpenJPA voluntad   devolver una instancia de la subclase.   Esto significa que el instanceof   operador funcionará como se espera, pero   o.getClass () devolverá la subclase   en lugar de la clase que usted escribió.   Usted no tiene que hacer nada en absoluto   para obtener este comportamiento. voluntad OpenJPA   detectar automáticamente si o no   el entorno de ejecución es capaz   de Java 6 retransformation clase.

Cualquier pista por qué esto no está funcionando? Gracias mucho ...

(puntos extra por qué ocurre la advertencia openjpa.Id - I no han establecido dicha propiedad ...)

¿Fue útil?

Solución

Aha, resulta que la respuesta era pasar en:

"openjpa.RuntimeUnenhancedClasses" => RuntimeUnenhancedClassesModes.SUPPORTED

para el mapa de configuración. ¿Por qué esto no se documenta con mayor claridad, no estoy seguro ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top