Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] Duda general de ejecución del JPA

La ejecución del RegistroDeProducto, me ejecuta solo hasta una parte, del programa, no me salen los letreros que al profe le salen.

Sale en consola.

ago 28, 2023 11:24:10 A. M. org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [name: tienda] ago 28, 2023 11:24:11 A. M. org.hibernate.Version logVersion INFO: HHH000412: Hibernate ORM core version 5.6.15.Final ago 28, 2023 11:24:12 A. M. org.hibernate.annotations.common.reflection.java.JavaReflectionManager INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final} ago 28, 2023 11:24:13 A. M. org.hibernate.dialect.Dialect INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect ago 28, 2023 11:24:16 A. M. org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) ago 28, 2023 11:24:16 A. M. org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:mem:test] ago 28, 2023 11:24:16 A. M. org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {password=****, user=sa} ago 28, 2023 11:24:16 A. M. org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false ago 28, 2023 11:24:16 A. M. org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections INFO: HHH000115: Hibernate connection pool size: 20 (min=1) ago 28, 2023 11:24:17 A. M. org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5c60b0a0] 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. ago 28, 2023 11:24:17 A. M. org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@16c587de] 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. ago 28, 2023 11:24:17 A. M. org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] Conexion EntityManager OK (este mensaje lo coloque en el codigo)

Tengo Windows 10 pro, Java: Eclipse IDE for Enterprise Java and Web Developers - 2022-12, con JSE-11, aunque lo cambio a JSE-17 y me sale lo mismo.

  1. Se asume que el h2 database, funciona en memoria, no se tiene que tener abierto mysql?
  2. Hay que montar algun .jar en el equipo de h2 database. Esta funcionalidad no la toma en persistence.xml.?
  3. Que pena que este un poco atrasado.

Envio link del repositorio, para su revisión. Gracias. https://github.com/ravila64/Tienda-JPA.git atte, Rene Avila Alonso. Bog, Col.

2 respuestas

Hola Rene,

Por lo que veo, parece que tu programa se ejecuta hasta cierto punto y luego se detiene, sin mostrar los mensajes que esperas. Según la salida de la consola que proporcionaste, parece que la conexión con la base de datos se establece correctamente y no hay errores obvios en ese aspecto.

Una cosa que podrías intentar es asegurarte de que estás llamando correctamente al método flush después de realizar cambios en tus entidades. El método flush es el que sincroniza el estado actual de la entidad con la base de datos. Si no se llama a este método después de realizar cambios, esos cambios no se reflejarán en la base de datos y es posible que no veas los mensajes que esperas.

Por ejemplo, si estás eliminando una entidad, tu código podría verse así:

entityManager.remove(entidad);
entityManager.flush();

Además, si estás esperando ver mensajes específicos en la consola, asegúrate de que estás utilizando correctamente el método System.out.println (o el método de registro que estés utilizando) para imprimir estos mensajes.

Por último, te recomendaría que revises tu código y te asegures de que estás siguiendo correctamente el flujo de estados de las entidades en JPA, como se explica en la lección. Por ejemplo, antes de poder eliminar una entidad, debes asegurarte de que esa entidad está en estado "managed". Si la entidad está en estado "detached", debes volver a adjuntarla utilizando el método merge antes de poder eliminarla.

Espero que estas sugerencias te ayuden a solucionar el problema. Si sigues teniendo problemas, te recomendaría que intentes depurar tu código paso a paso para ver exactamente dónde se detiene.

Espero haber ayudado. Mucho éxito en todo lo que te propongas y si tienes más duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.

Buena tarde, Gracias Adriana por sus indicaciones. Seguiré en el proceso.