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

Error con el archivo persistence en el create-drop

Hola sucede que volví a base de datos Mysql dado que h2 no funcionaba y hasta este punto cuando ejecuto la aplicacion esta no vuelve a crear las tablas como la propiedad le dice

Les comparto mi persistence para ver si me pueden ayudar:

<persistence version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <persistence-unit name="tienda" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/tienda"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="Broloc108!"/>
            
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    
        </properties>
    </persistence-unit>
</persistence>

Como veran esta en create-drop y la primera vez que lo ejecute funciono, pero la segunda vez que lo ejecute solo agrego un nuevo registro en la tabla productos, creo que esa linea causa el problema, a pesar de que la propiedad create-drop debería estar eliminando las tablas y volviendo a crear todo.

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

La ejecute unas 12 veces mas y eso se refleja en el Mysql Workbench en la tabla productos

3 respuestas

Te comparto mi persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.2" 
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    
    <persistence-unit name="tienda" transaction-type="RESOURCE_LOCAL">
    
        <class>com.latam.alura.tienda.Producto</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/tienda?useTimeZone=true;serverTimeZone=UTC"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="123456"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            
            <property name="hibernate.show_sql" value="true" />
            
            <!-- Crea la tabla o sino la actualiza de ser necesaria con nuevos atributos -->		
            <property name="hibernate.hbm2ddl.auto" value="update" />
            
            <!-- Dar Formato al SQL -->
            <property name="hibernate.format_sql" value="true" />
            
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
        </properties>
    </persistence-unit>
    
</persistence>

Como recomendación cambia el update por create-drop solo cuando sea necesario aunque de igual manera no deberias tener error de que las tablas no se borren.

Como ya habrás visto en mi archivo persistence este ya esta en create-drop, este elimina algunas tablas pero no es capaz de eliminar la tabla productos

yo tengo el mismo error aun no lo entiendo pero l ohe dejado el error sale y ahi mismo dice sucede al realizar en el main la consulta que habiamos hecho de prueba de buscar por nombre al realizar los ejercicios de esta clase en la clase pedidos fue que se creo el error sucede que en productodao realizamos una consultaen tu caso la linea 54 si te das cuenta tenemos la linea getSingle y solo se puede acceder a un resultado pero al hacer la consulta te arroja 14 entonces parece que ese es el problema yo lo que hice fue borrar esas lineas de codigo en lo que aprendo a resolverlo