2010-02-24 10 views

Respuesta

7

Parece que algunas personas no leyeron mi respuesta correctamente así que voy a reformular: su hibernate.properties parece correcto, la propiedad está bien definida, debería funcionar. Entonces, perdón por la pregunta, pero ¿está CGlib en el classpath?

Actualización: Acabo de probar y funciona para mí. Aquí está la salida llego en tiempo de inicialización:

 
15 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 
18 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.bytecode.provider=cglib} 
20 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib 

PS: Tenga en cuenta que CGLIB support has been deprecated recientemente (esto no quiere decir que no será capaz de utilizar CGLIB pero la integración no tendrá soporte).

+0

No sé cómo funciona en su entorno (¿quizás esté ejecutando Hibernate empaquetado con JBoss?), Pero Hibernate necesita una propiedad del sistema o un 'hibernate.properties' en classpath en la creación de clases (¡estúpido!) Para capturar el bytecode configuración del proveedor. Entonces, tener 'cglib' en classpath no es la raíz del problema. Ambos 3.3.1 y 3.3.2 no funcionan "fuera de la caja". –

+0

@dma_k Lea de nuevo la pregunta, el OP ** does ** tiene un archivo 'hibernate.properties' (*" En mi archivo de propiedades, establezco "*) en el classpath, por lo que esta parte está implícita en mi respuesta (* "y su propiedad está bien definida" *). Quizás ** usted ** no entendió lo que el OP y yo dijimos, en cuyo caso, le pido que reconsidere su voto. Nunca dije que el archivo de la propiedad no era necesario. –

+0

@dma_k La traza de registro incluso muestra que tengo un 'hibernate.properties'. Has leído mal lo que dije. –

1

Sí, también puso

hibernate.properties 

en alguna carpeta de origen y recuerde que debe tener el hibermate-cglib-embalar en las dependencias:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-cglib-repack</artifactId> 
    <version>2.1_3</version> 
</dependency> 
+0

A partir de Hibernate 3.3.2, la versión reempaquetada de cglib no es necesaria. Y, al menos para 3.2.x, necesita especificar la propiedad del sistema '-Dhibernate.bytecode.provider = cglib' o crear un' hibernate.properties' de toda la ruta de clase con la misma propiedad definida. –

1

Recuerde que la biblioteca CGLIB no se desarrolla por unos 4 años . Sin embargo, debes hacer todo lo posible para que tu código funcione con Javassist, que aún se mantiene activamente.

Cuestiones relacionadas