6
respuestas

Creación de tablas - SQLException

Hola! estoy dandole vueltas al problema pero no lo puedo solucionar. Crea la bdd, pero no crea las tablas. realicé el import java.sql.SQLException; desde la clase Registro de producto, pero no es la solución. Al ejecutar RegistroDeProducto Crea las tablas, pero no estan en la carpeta que está creada para ese fin. Abajo copio el código de la terminal en donde muestra la creación de tablas. -Puede ser que el problema sea el value "Create-drop"?

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadIngrese aquí la descripción de esta imagen para ayudar con la accesibilidad `jun 02, 2023 4:33:46 P.�M. org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@59696551] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Hibernate:

create table clientes (
   id bigint generated by default as identity,
    dni varchar(255),
    nombre varchar(255),
    primary key (id)
)

Hibernate:

create table items_pedido (
   id bigint generated by default as identity,
    cantidad integer not null,
    precioUnitario numeric(19,2),
    pedido_id bigint,
    producto_id bigint,
    primary key (id)
)

Hibernate:

create table pedidos (
   id bigint generated by default as identity,
    fecha date,
    valor_total numeric(19,2),
    cliente_id bigint,
    primary key (id)
)

Hibernate:

create table productos (
   id bigint generated by default as identity,
    descripcion varchar(255),
    fechaDeRegistro date,
    nombre varchar(255),
    precio numeric(19,2),
    categoria_id bigint,
    primary key (id)
)

Hibernate:

alter table items_pedido 
   add constraint FKhshdf36fo6kflmxhom10pbn39 
   foreign key (pedido_id) 
   references pedidos

Hibernate:

alter table items_pedido 
   add constraint FK7jlim4dtym775y1be8l1l7w3h 
   foreign key (producto_id) 
   references productos

Hibernate:

alter table pedidos 
   add constraint FKg7202lk0hwxn04bmdl2thth5b 
   foreign key (cliente_id) 
   references clientes

Hibernate:

alter table productos 
   add constraint FK2fwq10nwymfv7fumctxt9vpgb 
   foreign key (categoria_id) 
   references categorias

jun 02, 2023 4:33:46 P.�M. org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] Hibernate: insert into categorias (id, nombre) values (default, ?) Hibernate: insert into productos (id, categoria_id, descripcion, fechaDeRegistro, nombre, precio) values (default, ?, ?, ?, ?, ?) Hibernate: select producto0_.id as id1_4_0_, producto0_.categoria_id as categori6_4_0_, producto0_.descripcion as descripc2_4_0_, producto0_.fechaDeRegistro as fechader3_4_0_, producto0_.nombre as nombre4_4_0_, producto0_.precio as precio5_4_0_, categoria1_.id as id1_0_1_, categoria1_.nombre as nombre2_0_1_ from productos producto0_ left outer join categorias categoria1_ on producto0_.categoria_id=categoria1_.id where producto0_.id=? Xiaomi Redmi Hibernate: select producto0_.precio as col_0_0_ from productos producto0_ where producto0_.nombre=? 800.00 `

6 respuestas

Hola Kevin, ¡espero que estés bien!

No creo que el problema sea el create-drop pero si quiere probar otra posibilidad, puede utilizar la opción update, para actualizar el esquema.

Y recuerda que cada vez que cambiemos un archivo XML, debemos realizar la construcción del proyecto a través de Maven de nuevo.

Sobre el error en la pantalla roja: no entiendo por qué ocurre, si ya se ha definido el driver para la conexión con el persistence.xml.

¡Saludos y buenos estudios!

yo tampoco creo que sea por el create drop.

A que te refieres. debo crear un nuevo proyecto empezando de nuevo? copio el código, clase por clase?

¡Hola Kevin!

Por lo que puedo ver en la información que proporcionaste, parece que las tablas se están creando correctamente, pero no estás seguro de dónde se están guardando. ¿Podrías verificar si están en la base de datos que creaste?

En cuanto a la pregunta sobre "create-drop", esta propiedad indica que Hibernate eliminará todas las tablas al final de la sesión. Si no quieres que esto suceda, puedes cambiar esta propiedad a "update" o "validate".

Espero que esto te ayude a resolver tu problema. Si tienes alguna otra pregunta, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Hola Kevin,

Agrega el nombre de la base de datos al final de la ruta que escribiste en persistence.xml

La ruta en persistence.xml debería terminar así:

...JPA-con-hibernate-Alura-stage--final\BDD\database"/>

Luego ejecuta la Clase Registro de Producto

Y finalmente entra a la base de datos h2 con la ruta (incluyendo el nombre de la base de datos al igual que en persistence.xml), usuario y contraseña que deben ser los mismos que están escritos en persistence.xml

Con respecto al SQLException quizás podrías revisar que todo esté bien escrito en el pom.xml en especial los drivers

Hola Eric y Paul!

Gracias por contestar. Sigo sin poder continuar con el curso debido a este problema. Que me recomeindan hacer? Estoy perdiendo muchísimo tiempo.

Hice absolutamente todo lo que están diciendo y sigue sin poder verse las tablas.

paso algunos screenshots a ver si me pueden ayudar... como puedo agregar el driver .jar??Esta es la carpeta BDD y no se como chequear si las tablas se encuentran ahí, con que programa lo abró el database.mv?

Hola Kevin,

Intenta crear una nueva base de datos en otra ruta más corta, en el disco C, y que sea de acceso público (que no se necesiten permisos para acceder) y que los nombres de las carpetas no tengan espacios, por ejemplo: C:\Users\Public

También podría ser una instalación dañada, archivos corruptos, etc, si lo anterior no funciona intenta reinstalar la base de datos, mira que la versión sea compatible.

Dale click derecho a "tienda" -> Maven -> Update Project y actualiza tu proyecto "tienda"

Edita el persistence.xml con la nueva ruta.

Luego ejecuta la Clase Registro de Producto

Y finalmente entra a la base de datos h2 con la ruta (incluyendo el nombre de la base de datos al igual que en persistence.xml), usuario y contraseña que deben ser los mismos que están escritos en persistence.xml

Parece que es un problema recurrente, y lo buscan resolver de diferentes maneras incluso eliminando la dependencia https://stackoverflow.com/questions/39854172/h2-console-error-no-suitable-driver-found-for-08001-0 pero mejor no intentes eso

Si aun no funciona te sugiero que avances con los demás cursos, no pierdas mucho tiempo.