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

Error en Persistance

Hola pido ayuda ya que al ejecutar el proyecto despues de agregar el nomre de database en el archivo persistance genera error y no logra inicializar.

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

Ya revise todo el codigo y esta exacatemente igual que en los videos.

9 respuestas

¡Hola Juan!

Entiendo que estás experimentando problemas al ejecutar tu proyecto después de agregar el nombre de la base de datos en el archivo persistence.xml.

Por lo que puedo ver en las imágenes que proporcionaste, el error parece estar relacionado con la conexión a la base de datos. Podría ser que la configuración de la conexión no esté correctamente especificada en el archivo persistence.xml.

Te sugiero que verifiques la URL de conexión a la base de datos, el nombre de usuario y la contraseña para asegurarte de que sean correctos. También puedes intentar conectarte a la base de datos desde una herramienta externa para verificar que la conexión sea exitosa.

Si después de verificar todo esto el problema persiste, por favor proporciona más detalles sobre el error que estás experimentando para que pueda ayudarte mejor.

¡Espero haber ayudado y buenos estudios!

Hola Eric,

El error aun sigue, en el archivo persistance.xml ahí deje la captura en la primera respuesta con el user y el password y el url.

Ademas al conectarme a la base de datos desde el h2 Console funciona la conexión.

Adjunto imagenes de la conexión.

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

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

Mi sugerencia sería revisar la configuración de la base de datos en el archivo persistence.xml, asegurándose de que el nombre de la tabla esté escrito correctamente y que la conexión con la base de datos esté configurada correctamente. También se podría revisar si se están usando las anotaciones adecuadas en las clases de entidad.

Si el problema persiste, sería útil conocer más detalles sobre el error y ver el código que estás utilizando para poder brindar una mejor ayuda.

Hola, ¿podrías subir tu proyecto a un repositorio para poder revisarlo con más detenimiento?

por favor intenta realizar esta prueba antes de comenzar con tu proyecto

1) abre la base de datos H2

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

2) luego selecciona crear una base de datos

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

3) luego coloca la siguiente informacion (recuerda q el ultimo nombre en la ruta corresponde al nombre en la base de datos)

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

4) ahora abre tu IDE de eclipse y crea un nuevo projecto maven ese projecto va a tener las siguientes clases

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

a continuacion el codigo para cada una de ellas

Cliente.java

package ejemplo;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="clientes")
public class Cliente {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @Embedded
    private DatosPersonales datosPersonales;

    public Cliente() {}

    public Cliente(String nombre, String dni) {
        this.datosPersonales=new DatosPersonales(nombre,dni);
    }

    public Long getId() {
        return id;
    }

    public String getNombre() {
        return datosPersonales.getNombre();
    }

    public void setNombre(String nombre) {
        this.datosPersonales.setNombre(nombre);
    }

    public String getDni() {
        return datosPersonales.getDni();
    }

    public void setDni(String dni) {
        this.datosPersonales.setDni(dni);
    }

}

DatosPersonales.java

package ejemplo;

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable
public class DatosPersonales implements Serializable{


    private static final long serialVersionUID = 8063180201812979106L;

    private String nombre;
    private String dni;

    public DatosPersonales() {

    }


    public DatosPersonales(String nombre, String dni) {
        this.nombre = nombre;
        this.dni = dni;
    }


    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getDni() {
        return dni;
    }
    public void setDni(String dni) {
        this.dni = dni;
    }
}

JPAUtils.java

package ejemplo;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JPAUtils {

    private static EntityManagerFactory FACTORY = Persistence.createEntityManagerFactory("tienda");

    public static EntityManager getEntityManager() {
        return FACTORY.createEntityManager();
    }
}

Principal.java

package ejemplo;

import javax.persistence.EntityManager;



public class Principal {

    public static void main(String[] args) {
        EntityManager em = JPAUtils.getEntityManager();

        Cliente cliente = new Cliente("Juan","k6757kjb");

        em.getTransaction().begin();

        em.persist(cliente);

        em.getTransaction().commit();

        em.close();



        System.out.println("working");


    }

}

persistence.xml (aqui configura la url,usuario y contraseña que colocaste)

<?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">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:C:\Users\Public\Alura\folder\newdatabase"/>
            <property name="javax.persistence.jdbc.user" value="alura"/>
            <property name="javax.persistence.jdbc.password" value="4321"/>

            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>            
            <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>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ejemplo</groupId>
  <artifactId>ejemplo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.6.14.Final</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.1.214</version>
        </dependency>
    </dependencies>
</project>

Claro que sí, acá dejo el enlace al repositorio para la revision ya que no he logrado generar la configuración:

https://github.com/JuanAnayaR/Control_de_Stock

solución!

Juan Esteban Anaya Rincón por favor revisa tu repositorio realice una alteracion, recordando que el parametro nombre tiene que estar seguido de los dos puntos sin espacio.

@NamedQuery(name="Producto.consultarPrecioPorNombre", query="SELECT P.precio FROM Producto AS P WHERE P.nombre=:nombre")

el link del repositorio que me enviaste pertenece a otro proyecto.

clone tu proyecto y consegui compilarlo con exito. espero haberte ayudado y estamos disponible a futuras dudas

Muchas Gracias Jose por la ayuda.

No había notado ese espacio en la Query.

Mil gracias.