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

Problema

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad llevo desde el princio arrastrando este problema no entiendo que es lo que esta mal asi que comparto los codigos que se muestran y por favor si son tan amables de ayudarme, ya me canse y siento que no avanzo me di cuenta que justo al hacer el select de buscar por id termina el proceso

public class RegistroPedido {

    public static void main(String[] args) {
        registrarProducto();
        EntityManager em = JPAUtils.getEntityManager();
        ProductoDao productoDao = new ProductoDao(em);
        
        Producto producto=productoDao.consultaPorId(1L);
        
        
        PedidoDao pedidoDao= new PedidoDao(em);
        ClienteDao clienteDao=new ClienteDao(em);
        Cliente cliente = new Cliente("luis fonsi", "dibm990210");
        Pedido pedido = new Pedido(cliente);
        pedido.agregarItems(new ItemsPedido(5, producto, pedido));
        em.getTransaction().begin();
        pedidoDao.guardar(pedido);
        clienteDao.guardar(cliente);
        em.getTransaction().commit();
        em.close();
    }

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

        Producto producto = new Producto("Motorola", "telefono marca patito", new BigDecimal("8000"), celulares);

        EntityManager em = JPAUtils.getEntityManager();

        ProductoDao productoDao = new ProductoDao(em);
        CategoriaDao categoriaDao = new CategoriaDao(em);

        em.getTransaction().begin();
        
        categoriaDao.guardar(celulares);
        productoDao.guardar(producto);

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

}

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

3 respuestas

Hola José,

En tu código, primero estás registrando un producto, luego estás buscando ese producto por su ID y finalmente estás intentando guardar un pedido y un cliente en la base de datos. Parece que el problema surge cuando intentas buscar el producto por su ID.

Asegúrate de que el producto con el ID que estás buscando realmente exista en la base de datos. Si el producto no existe, no podrás obtenerlo y esto podría ser la causa del problema.

Además, noté que estás cerrando el EntityManager después de registrar el producto y luego lo estás abriendo de nuevo para guardar el pedido y el cliente. Esto podría estar causando problemas. Te recomendaría que intentes mantener una sola instancia del EntityManager durante toda la operación.

Aquí te dejo un ejemplo de cómo podrías hacerlo:

public class RegistroPedido {

    public static void main(String[] args) {
        EntityManager em = JPAUtils.getEntityManager();
        registrarProducto(em);
        
        ProductoDao productoDao = new ProductoDao(em);
        Producto producto=productoDao.consultaPorId(1L);
        
        PedidoDao pedidoDao= new PedidoDao(em);
        ClienteDao clienteDao=new ClienteDao(em);
        Cliente cliente = new Cliente("luis fonsi", "dibm990210");
        Pedido pedido = new Pedido(cliente);
        pedido.agregarItems(new ItemsPedido(5, producto, pedido));
        
        em.getTransaction().begin();
        pedidoDao.guardar(pedido);
        clienteDao.guardar(cliente);
        em.getTransaction().commit();
        em.close();
    }

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

        Producto producto = new Producto("Motorola", "telefono marca patito", new BigDecimal("8000"), celulares);

        ProductoDao productoDao = new ProductoDao(em);
        CategoriaDao categoriaDao = new CategoriaDao(em);

        em.getTransaction().begin();
        
        categoriaDao.guardar(celulares);
        productoDao.guardar(producto);

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

En este ejemplo, estoy pasando el EntityManager como argumento al método registrarProducto y estoy utilizando la misma instancia del EntityManager para todas las operaciones.

Espero que esto te ayude a resolver el problema. 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.
solución!

encontre el problema al buscar el ID en la base de datos que apenas aprendimos a hacer y visualizar las tablas el id no lo crea en 1L lo crea en 2L de tipo long y por eso no existia

suena muy simple pero es la primera vez que pasa y cada dia aprendo que errores son los mas comunes para no estar perdiendo tiempo buscando parace ser que cada error es unico para cada quien ayer la base de datos no conectaba y estaba buscando una vercion que fuera soportada por el maven y por hibernate

Muchas Gracias, tenía el mismo error, era muy simple, pero me sirvió muchísimo