2010-11-24 14 views
7

Actualmente estoy trabajando en una migración de sistema (desde hibernate 3.2.2.GA con JPA1 a hibernar 3.6 con JPA2. La migración en sí es muy simple, no hay actualizaciones importantes que hacer (de hecho, no creo) .. no hay ninguna en absoluto)Hibernate 3.5 o 3.6 sin compatibilidad con @Any anotación?

el problema que estoy enfrentando es que hibernación se produce una excepción en tiempo de ejecución, se quejaba de las anotaciones @Any el StackTrace es la siguiente:

Caused by: java.lang.UnsupportedOperationException: any not supported yet 
    at org.hibernate.ejb.metamodel.AttributeFactory.determineAttributeMetadata(AttributeFactory.java:452) 
    at org.hibernate.ejb.metamodel.AttributeFactory.buildAttribute(AttributeFactory.java:93) 
    at org.hibernate.ejb.metamodel.MetadataContext.wrapUp(MetadataContext.java:183) 
    at org.hibernate.ejb.metamodel.MetamodelImpl.buildMetamodel(MetamodelImpl.java:66) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225) 

por lo que significa que @Any o @ManyToAny ya no son compatibles con hibernación. Esto es extraño porque la documentación (de 3.3 a 3.6) menciona cómo usar la anotación @Any y AFAIK no hay ninguna versión de hibernación que deprecie esta anotación ación.

Comprobé el código fuente de hibernación 3.5 y la comprobación de cualquier anotación @Any también, por lo que arroja la misma excepción.

¿Tienen alguna solución para este problema?

muchas gracias!

+1

Ellos no son compatibles sólo si se utiliza JPA interfaz. Con 'SessionFactory' funcionan bien. – axtavt

+0

eso es extraño ... funciona en hibernate 3.2 con jpa1. Imagínate. Me quedaré con 3.2 por ahora =/ –

+2

Eso está bastante claro. JPA2 incluye compatibilidad con metamodelos. Como no está claro cómo representar los atributos '@ Any' en un metamodelo, tienen que prohibir dichos atributos (se puede deducir de la pila). – axtavt

Respuesta

5

podría por favor trate de añadir esto a sus propiedades de hibernación:

hibernate.ejb.metamodel.generation=disabled 

Esto debería desactivar la generación metamodelo, evitando la excepción que está viendo. (valor de la propiedad Editado decir 'discapacitados' como se señala en los comentarios)

+0

Gracias Partenon, lo intentaré la próxima semana y reportaré el resultado aquí. –

+1

Una pequeña enmienda a su parte de respuesta: está "deshabilitada" en lugar de "deshabilitada". Aparte de eso, realmente funciona. ¡Gracias de nuevo! –

1

O, si usted no está utilizando hibernate.properties, añadir a su <property name="hibernate.ejb.metamodel.generation" value="disabled" /> persistence.xml

Cuestiones relacionadas