Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

Erro en la creación automática de tablas con Hibernate

Bueno, resulta que desde hace días que inicie con la primera parte de JPA con la implementación de Hibernate, me fije que en la configuración del archivo Pesistence, la implementacion que he realizado fue con MYSQL, y me ha funcionado todo correctamente.

La duda que me surge, es que el profesor usa esta linea:

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

Con la cual el atributo value varia segun la necesidad que se tenga en el momento.

La cosa es que al implementar esto en mi proyecto, y al ejecutarlo no se crean automaticamenta las tablas como al profesor, de manera que la solucion que encontre fue crear las tablas de manera manual en la base de datos, cosa que no es eficiente segun lo qye he entendido. Alguien sabe que puede estar mal? A continuacion mi configuración de persistence.xml

com.arquitecturajava.jpabasico.dominio.Libro

com.alura.tienda.Producto

 <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
 <property name="javax.persistence.jdbc.user" value="root" />
 <property name="javax.persistence.jdbc.password" value="admin" />
 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/tiendaalura" />
3 respuestas
solución!

¡Hola Jeasson! Espero que estés teniendo un buen día. En cuanto a tu pregunta, es posible que el problema que estás experimentando se deba a que la propiedad "hibernate.hbm2ddl.auto" está establecida en "create", lo que significa que Hibernate intentará crear automáticamente las tablas en la base de datos. Si las tablas ya existen, esto puede causar un error y evitar que se creen las tablas.

Una solución sería cambiar el valor de "hibernate.hbm2ddl.auto" a "update", lo que permitirá que Hibernate actualice las tablas existentes en la base de datos en lugar de intentar crearlas nuevamente. También puedes intentar eliminar la propiedad "hibernate.hbm2ddl.auto" y ver si eso permite que se creen las tablas automáticamente.

Espero que esto te ayude a solucionar tu problema. ¡Buenos estudios!

Perfecto, unicamente me funciono eliminar la linea

Ya que cambiarle el value no funciono de ninguna manera, tal vez sea por lo que estoy usando MySQL, pero al final la solución de eliminar la linea y crear las tablas de manera manual fue la que me funciono. Gracias Eric

En definitiva, por fin encontre la solucion mas factible, y es que resulta que

         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

Al usar esta linea en el persistencia se entiende que trabaja con cualquier version de mysql, de manera que opte por cambiarla por:

         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect" />

hasta ahi todo bien, ademas tambien hay que tener en cuenta que el driver que estaba usando no era correcto para versiones de mysql 8.x, estaba usando

         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />

y la correcta para versiones de MySQL 8.x es:

         <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />

Me siento contento de haber encontrado el error, y de que el instructor me haya ayudado o guiado de manera que supiera por donde podria estar el error