miércoles, 12 de agosto de 2015

Not an managed type Exception

Vamos a volver un poco a los orígenes de hacer post relativos a errores que suelo encontrar cuando codifico. Este me ha ocurrido recientemente y tiene su pequeño truco. 

Este error viene dado por la configuración de JPA de una aplicación JEE con Spring, y es este:

Caused by: java.lang.IllegalArgumentException: Not an managed type: class

En principio si 'googleas' un poco todos te dirán que es porque la clase JPA de la cual quieres hacer persistencia no esta debidamente configurada. Para ello y según la documentación de Spring necesita una de estas 3 cosas:

  • Que tenga su identificador debidamente anotado. 
  • Que implemente Persistable
  • Que implemente EntityInformation


Y en un principio mi clase tenia sus identificador con la anotación correspondiente. Pero aún así al lanzar la aplicación me seguía dando el error. Además tenía un ejemplo muy parecido en otra aplicación y funcionaba correctamente. Probé con la opción 'packagesToScan' pero me seguía sin poder resolverlo hasta que vi el siguiente enlace. En el se indica una cosa clave


  • Las clases que se que contenga las anotaciones @Entity, @MappedSuperclass or @Embeddable y se encuentren en el mismo entorno que el fichero persistence.xml serán manejadas por JPA. 


Y esta es la solución, puesto que yo tenía un proyecto dividido en módulos diferenciados y donde se encontraba el fichero persistence.xml no erá el mismo donde se encontraban las clases JPA. Una vez que añadí el fichero persistence.xml al módulo de las clases JPA ya funciono correctamente. 

No hay comentarios:

Publicar un comentario