Tablas con nombre reservado en entidades en Spring Boot

Escenario

Tenemos una aplicación corriendo sobre Spring Boot que usa Hibernate como ORM. Una de las tablas se llama Group, se utiliza para almacenar los distintos grupos a los que puede pertenecer un usuario.

Problema

La entidad de java que representa la tabla de grupos tiene esta pinta: Sabía que group es una palabra reservada en SQL, pero también pensaba que Hibernate iba a ser lo bastante listo como para, por defecto, colocar entre acentos graves «`» los nombres de las tablas. Pues no es así, ya que la aplicación no arrancaba por el siguiente error: Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group group0_ where group0_.name='READ_FILE_WARNING_NOTIFICATIONS'' at line 1

Solución

Ésta es sencilla, basta con añadir la anotación Table a la clase y especificar el nombre de la tabla de esta manera:

Publicaciones Similares

  • OsTicket y nginx

    Escenario Después de 5 años campando en un Ubuntu 16.04 ha llegado la hora de migrar la aplicación osTicket a un nuevo servidor. Para quien no la conozca osTicket es un sistema de incidencias que podemos desplegar en un servidor propio. La aplicación web cuenta con una herramienta que automáticamente detecta una diferencia de versiones…

  • Sonata Admin: el calendario no se cierra

    Escenario Incluir un filtro de rango de fechas en SonataAdmin que use un calendario para seleccionar la fecha es más o menos fácil. Primero añadimos el siguiente bloque en el admin de nuestra entidad:

    Y la siguiente clave bajo form_themesen el fichero config/packages/twig.yaml:

    Problema El calendario no se cierra automáticamente cuando se selecciona…

  • |

    Traducción de variables en javascript

    Escenario Estoy trabajando en una aplicación multi-lenguaje desarrollada con la plataforma spring boot. Para quien no conozca esta plataforma de desarrollo, spring boot te permite gestionar varios lenguajes gracias a un sistema que utiliza ficheros de tipo propiedades para almacenar las traducciones. Los nombres de estos ficheros han de respetar la siguiente convención, messages_{código ISO…

  • Valor por defecto en un combo de una plantilla de Thymeleaf

    Escenario En Thymleaf podemos usar el atributo th:field para enlazar la vista con el modelo:

    En caso de que hubiéramos cargado estos datos del servidor, nuestro select tendría esta pinta:

    Problema ¿Qué pasa si queremos seleccionar una divisa por defecto? En el caso de que fuera el euro tendríamos que hacer algo así,…

  • phpsize

    phpize: command not found Si alguna vez te topas con este error intentando instalar un paquete PEAR en un sistema linux, muy probablemente sea por que no tienes installado el paquete php-devel.

Deja una respuesta

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