Tengo un proyecto muy usado en el que estoy trabajando actualmente actualizando. Hay varios lugares donde se puede instalar este proyecto, y en el futuro no es seguro qué versión se usa y a qué versión se puede actualizar en el futuro. En este momento, todos son iguales.Crear una consulta de tabla de creación de HSQL de la clase
Mi problema se debe al hecho de que puede haber muchos cambios en las clases de entidad de hibernación, y debe ser fácil actualizar a una versión más nueva sin problemas y sin pérdida de contenido de la base de datos. Simplemente reemplace WAR y comience y debería migrar por sí mismo.
Que yo sepa Hibernate no altera las tablas a menos que hibernate.hbm2ddl.auto = create, pero que en realidad descarta todos los datos?
Así que ahora cuando el contexto Spring se ha cargado completamente, ejecuta un bean que migrará la base de datos a la versión actual pasando por todos los cambios de la versiónX a la versiónY (qué versión estaba guardada previamente en la base de datos) y altera manualmente la tabla.
No es hacer unos pocos ALTER TABLE no modificable para agregar algunas columnas mucha molestia, pero cuando se trata de añadir nuevas tablas completas, se siente tonto tener que escribir todo eso ...
Así que mi pregunta (s) es la siguiente:
¿hay alguna manera de enviar una clase de entidad y un dialecto de Hibernate código en algún lugar, y volver una consulta SQL válida para la creación de una mesa?
¿Y aún mejor, de alguna manera crear una cadena SQL para agregar una columna a una tabla, dialecto seguro?
espero que esto no es una pregunta tonta, y no me he perdido algo obvio cuando se trata de Hibernate ...
De acuerdo, me conformé con que esta era la mejor respuesta. Todavía tengo reservas para liquidarme como una dependencia o ajustar mis anotaciones Spring + Hibernate +, pero hizo un gran trabajo al crear consultas SQL codificadas que puedo usar para mi propia solución personalizada. Gracias. – Stmated
Marque esta respuesta de Dipesh: http://stackoverflow.com/a/12259980/433789 – sdouglass
Dejar que Hibernate hacer su propia actualización automática funciona bien en casos simples como la adición de nuevas columnas anulables, pero no puede hacer frente a los más complejos migraciones como cambiar el nombre o eliminar columnas, cambiar tipos, etc. Imagine una situación en la que está agregando una columna nueva cuyo valor debe calcularse en función de los valores de las columnas existentes (en lugar de tener un valor predeterminado estático que funcione para todas las filas existentes)) –