En una aplicación Spring MVC que utiliza Hibernate y MySQL, se ha observado que al intentar persistir las subclases de una superclase abstracta, BaseEntity , encuentra el error "La tabla 'docbd.hibernate_sequences' no existe". Este error surge del uso de GenerationType.TABLE para @GeneratedValue y la falta de soporte de secuencia dentro de MySQL.
Dado que el uso de GenerationType.IDENTITY no es viable debido a la superclase abstracta que administra los ID de entidad y GenerationType.SEQUENCE no es compatible, plantea la cuestión de cómo resolver este problema. Los fragmentos de código proporcionados ilustran la superclase abstracta (BaseEntity), una subclase de ejemplo (CCD), el lenguaje específico de dominio (DDL) y el código JPQL dentro de un objeto de acceso a datos (DAO).
La estrategia de herencia empleada es InheritanceType .TABLE_PER_CLASS, que indica tablas separadas para cada subclase. Dada la incapacidad de MySQL para usar secuencias, la alternativa de usar GenerationType.TABLE conduce inevitablemente a la ausencia de una tabla hibernate_sequences.
El cartel afirma que usar @MappedSuperClass no es una opción viable, citando la necesidad de relaciones ManyToOne intercambiables. . Como ejemplo, AccessLog contiene una entidad_actor y una entidad_destino, las cuales heredan de BaseEntity. En este escenario, usar @MappedSuperClass generaría un error que indica que AccessLog no puede ubicar BaseEntity.
En un intento de resolver el problema, se creó una tabla hibernate_sequences como se sugirió. Sin embargo, surgió un nuevo error: "Columna desconocida 'sequence_name' en 'where cláusula'". Este error apunta a la consulta SQL iniciada por Hibernate: "seleccione secuencia_next_hi_value de hibernate_sequences donde secuencia_nombre = 'BaseEntity' para actualización".
Para solucionar este error específico, el autor necesita ayuda para resolver la columna 'sequence_name' que falta dentro de la tabla hibernate_sequences.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3