Saltar al contenido

@MappedSuperclass no es una @Entity en JPA?

Hacemos una revisión profunda cada post de nuestro espacio con la meta de enseñarte en todo momento información certera y actual.

Solución:

@MappedSupperclass es diferente a la @Inheritance anotación.

@MappedSuperclass le dice al proveedor de JPA que incluya las propiedades persistentes de la clase base como si fueran declaradas por la clase secundaria que extiende la superclase anotada con @MappedSuperclass.

Sin embargo, la herencia solo es visible en el mundo OOP, ya que, desde la perspectiva de la base de datos, no hay indicación de la clase base. Solo la entidad de clase secundaria tendrá una tabla asignada asociada.

los @Inheritance La anotación está destinada a materializar el modelo de herencia OOP en la estructura de la tabla de la base de datos. Más, puede consultar una clase base anotada con @Inheritance pero no puede hacer eso para una clase base anotada con @MappedSuperclass.

Puedo sugerir dos soluciones:

Cambiar herencia

La excepción que obtienes describe claramente tu problema: User no es una entidad. Cualquier clase declarada como superclase con la interfaz @MappedSuperclass no puede ser una entidad (en JPA estándar, depende de su proveedor de JPA)… déjame señalarte una respuesta que acabo de dar a un problema bastante similar

–> Tipos de superclase

Por lo tanto, definir su superclase como una entidad abstracta le dará el comportamiento deseado que describió.

Extra:

Si elige su estrategia de mapeo de herencia como @Inheritance(strategy = InheritanceType.SINGLE_TABLE) ni siquiera necesita varias tablas de base de datos. Aquí hay un buen ejemplo: herencia de tabla única JPA

Cambiar modelo (sugerido)

No divida su entidad de usuario en varias entidades solo por sus roles. Hacer una Enum con todos sus roles deseados y agréguelo como un campo a su User-entidad. Esto es mucho más común, a menos que necesite que su administrador, invitados, etc. sean un objeto propio …

Si aceptas, eres capaz de dejar un post acerca de qué le añadirías a esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *