5
respuestas

INFO: HHH000318: Could not find any META-INF/persistence.xml file in the classpath

Hola, alguien sabe como resolver este problema? Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Leí en otras soluciones que es por que el archivo persistence.xml necesita agregarse al build path pero no se si realmente lo tengo como debe estar. Mi directorio del proyecto: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

RegistroDeProducto:

package com.latam.alura.tienda.prueba;

import java.math.BigDecimal;

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

import com.latam.alura.tienda.modelo.Producto;

public class RegistroDeProducto {

    public static void main(String[] args) {
        
        Producto celular = new Producto();
        celular.setNombre("Samsung");
        celular.setDescripcion("Telefono usado");
        celular.setPrecio(new BigDecimal(1000));
        
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("tienda");
        EntityManager em = factory.createEntityManager();
        
        em.persist(celular);
        
    }

}

Clase Producto

package com.latam.alura.tienda.modelo;

import java.math.BigDecimal;

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

@Entity
@Table(name="productos")
public class Producto {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String nombre; 
    private String descripcion;
    private BigDecimal precio;
    
    
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getDescripcion() {
        return descripcion;
    }
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    public BigDecimal getPrecio() {
        return precio;
    }
    public void setPrecio(BigDecimal precio) {
        this.precio = precio;
    }
    
}

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>br.com.alura.tienda.modelo.Producto</class>  -->
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:loja" />
            <property name="javax.persistence.jdbc.user" value="sa" />
            <property name="javax.persistence.jdbc.password" value="" />
            <property name="hibernate.dialect"
                value="org.hibernate.dialect.H2Dialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
        </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>com.latam.alura.tienda</groupId>
  <artifactId>tienda</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.11.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>
5 respuestas

Hola Dimas, espero que estés bien!

Sí, el error indica que no puede encontrar el archivo persistence.xml en la ubicación esperada (META-INF/persistence.xml) en el classpath y este archivo es esencial para la configuración de JPA y Hibernate.

¿Pero ha conseguido resolver este problema? Si no, puede verificar cuidadosamente la ubicación y la configuración del archivo para resolver este problema.

Asegúrate de que la estructura del proyecto y las rutas de clasificación (classpath) estén configuradas correctamente en tu entorno de desarrollo y en tu herramienta de construcción y verifica que el archivo persistence.xml no esté dañado o contenga errores de sintaxis. Un archivo malformado puede causar que Hibernate no lo reconozca.

Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

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

Gracias, un compañero me comentó que MAIN-INF en lugar de META-INF en la carpeta de recursos. Ya lo solucione!

Perfecto, Dimas =) Gracias por compartir con nosotros.

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

No me funciona eso de MAIN INF en lugar del META INF ;(

Yo usé META-INF y todo me funcionó perfecto