hibernate.hbm2ddl.auto ¿cómo decide Hibernate cuándo crear o actualizar el ddl?

Estamos teniendo algunos problemas con hibernate y la creación automática del ddl en nuestro hsqldb.

Utilizamos

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

Por lo general, hibernate crea las tablas en el esquema en la base de datos automáticamente cuando cambiamos un objeto asignado, pero a veces se niega a hacerlo. En ese caso, tenemos que eliminar la base de datos manualmente del sistema de archivos para convencer a Hibernate de que vuelva a crear todas las tablas.

¿Alguien sabe cómo hibernate decide cuándo recrear el modelo de datos en la base de datos? He leído que decide que cuando se crea SessionFactory, pero ¿cuáles son las condiciones exactas que convencen a hiberbate para actualizar o crear las tablas?

preguntado el 09 de marzo de 12 a las 15:03

Si no se está eliminando, probablemente se deba a que hay algún bloqueo o algo sobre la mesa en ese momento que impide que Hibernate lo descarte. -

sí, eso sería algo que puedo entender, pero también tenemos el problema, cuando descartamos el esquema y lo recreamos manualmente. Entonces, el esquema está completamente vacío, por lo tanto, creo que no puede quedar ningún bloqueo. -

También cambié el esquema que usa la aplicación a uno nuevo y nuevamente, hibernate se niega a crear las tablas. Y sin más cambios en la aplicación, funciona después de eliminar la base de datos del sistema de archivos:

¿Hay algo en los registros de depuración de Hibernate que indique por qué podría estar haciendo esto? -

1 Respuestas

En su archivo de configuración de hibernación, tiene esta opción:

<property name="hbm2ddl.auto">update</property>

cambiar update a create o el create-drop or validate, lo que quieras que sea.

O si tiene la configuración correcta y no está haciendo lo que espera, verifique los mensajes de registro y suba el nivel de registro si es necesario.

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.