Al ejecutar la clase RegistroDeProducto lanza error al usar el método "consultarTodo()" de la clase ProductoDAO, aquí abao dejaré mi código y el mensaje de error.
Error:
RegistroDeProducto.java
public class RegistroDeProducto {
public static void main(String[] args) {
registrarProducto();
EntityManager em = JPAUtil.getEntityManager();
ProductoDAO productoDAO= new ProductoDAO(em);
Producto producto = productoDAO.consultar(1L);
System.out.println(producto.getNombre() + "\n");
List<Producto> productoList = productoDAO.consultarTodo();
productoList.forEach(prod->System.out.println(prod.getDescripcion()));
}
private static void registrarProducto() {
Categoria cat = new Categoria("Monitores");
Producto pro = new Producto("Monitor","Monitor curvo 27 pulgadas para pc",
new BigDecimal("255"), cat);
EntityManager em = JPAUtil.getEntityManager();
ProductoDAO productoDAO= new ProductoDAO(em);
CategoriaDAO catDAO = new CategoriaDAO(em);
//Iniciando una transacción
em.getTransaction().begin();
//persiste la categoria
catDAO.guardar(cat);
//persiste el Producto
productoDAO.guardar(pro);
//guardado de datos
em.getTransaction().commit();
System.out.println("producto Guardado.");
//sierra la conexion
em.close();
}
}
Producto.java
package com.latam.alura.tienda.modelo;
import javax.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDate;
@Entity
@Table(name="productos")
public class Producto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "nombre")
private String nombre;
@Column(name = "descripcion")
private String descripcion;
@Column(name = "precio")
private BigDecimal precio;
@Column(name = "fecha_registro")
private LocalDate fechaDeRegistro = LocalDate.now();
@ManyToOne
@JoinColumn(name = "categoria")
private Categoria categoria;
public Producto() {
}
public Producto(String nombre, String descripcion, BigDecimal precio, Categoria categoria) {
this.nombre = nombre;
this.descripcion = descripcion;
this.precio = precio;
this.categoria = categoria;
}
/*SETTERS & GETTERS*/
ProductoDAO.consultarTodo()
public List<Producto> consultarTodo(){
String jqpl = "SELECT P FROM productos AS P";
return this.em.createQuery(jqpl, Producto.class).getResultList();
}
Si alguien tuvo el mismo error por favor comparta su solución.