Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Exception in thread

Hola, Cuando ejecuto el programa me aparece esta excepcion, como la puedo solucionar?

Exception in thread "main" java.lang.ExceptionInInitializerError at com.latam.alura.tienda.prueba.RegistroDeProducto.registrarProducto(RegistroDeProducto.java:32) at com.latam.alura.tienda.prueba.RegistroDeProducto.main(RegistroDeProducto.java:16) Caused by: javax.persistence.PersistenceException: [PersistenceUnit: tienda] Unable to build Hibernate SessionFactory at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1597) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at com.latam.alura.tienda.utils.JPAUtils.(JPAUtils.java:9) ... 2 more Caused by: org.hibernate.MappingException: Could not determine type for: com.latam.alura.tienda.modelo.Cliente, at table: pedidos, for columns: [org.hibernate.mapping.Column(cliente)] at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:515) at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:482) at org.hibernate.mapping.Property.isValid(Property.java:231) at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:627) at org.hibernate.mapping.RootClass.validate(RootClass.java:267) at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:359) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:314) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) ... 6 more

**Este es mi codigo del registro de producto**

package com.latam.alura.tienda.prueba;

import java.math.BigDecimal;

import javax.persistence.EntityManager;

import com.latam.alura.tienda.dao.CategoriaDao; import com.latam.alura.tienda.dao.ProductoDao; import com.latam.alura.tienda.modelo.Categoria; import com.latam.alura.tienda.modelo.Producto; import com.latam.alura.tienda.utils.JPAUtils;

public class RegistroDeProducto {

public static void main(String[] args) {
    registrarProducto();
    EntityManager em = JPAUtils.getEntityManager();
    ProductoDao productoDao = new ProductoDao(em);
    Producto producto = productoDao.consultaPorId(1l);
    System.out.println(producto.getNombre());

    BigDecimal precio = productoDao.consultarPrecioPorNombreDeProducto("Xiaomi Redmi");
    System.out.println(precio);

}

private static void registrarProducto() {
    Categoria celulares = new Categoria("CELULARES");

    Producto celular = new Producto("Xiaomi Redmi", "Muy bueno", new BigDecimal("800"), celulares);

    EntityManager em = JPAUtils.getEntityManager();
    ProductoDao productoDao = new ProductoDao(em);
    CategoriaDao categoriaDao = new CategoriaDao(em);

    em.getTransaction().begin();

    categoriaDao.guardar(celulares);
    productoDao.guardar(celular);    

    em.getTransaction().commit();
    em.close();
}

}

1 respuesta

Hola Luz, ¡espero que estés bien!

Tenemos un error a considerar: ExceptionInInitializerError. El error informa que hubo algún error al inicializar un bloque estático o instanciar una variable estática.

En este caso, tenemos los errores apuntados para la línea 32 y 16 de esta clase X. Me ha quedado algo confuso de qué se trata las líneas pero creo que son referentes a los métodos categoriaDao.guardar() y productoDao.consultarPrecioPorNombreDeProducto, ¿correcto?

Si me equivoco por favor corríjame. Pero la idea es revisar las líneas que han sido marcadas en el error.

Si desea mostrar el código al que se refieren estas dos líneas, estoy disponible para discutir lo que ha ocurrido.

¡Saludos y buenos estudios!