Hola amigos un gusto saludarlos.
Me gustaría que alguno de ustedes me ayude con esta Exception que se me presento cuando estaba corriendo la PruebaDeDesempeño
Las tablas se crean adecuadamente pero la información no se inserta en ellas.
Exception in thread "main" java.lang.IllegalArgumentException: Type specified
for TypedQuery [com.latam.alura.tienda.modelo.Categoria] is incompatible with query
return type [class com.latam.alura.tienda.modelo.Producto]
at org.hibernate.internal.AbstractSharedSessionContract.buildIncompatibleException(AbstractSharedSessionContract.java:1029)
at org.hibernate.internal.AbstractSharedSessionContract.resultClassChecking(AbstractSharedSessionContract.java:888)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:849)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23)
at com.latam.alura.tienda.dao.CategoriaDAO.consultaPorNombre(CategoriaDAO.java:47)
at com.latam.alura.tienda.prueba.LoadRecords.loadProducto(LoadRecords.java:61)
at com.latam.alura.tienda.prueba.LoadRecords.cargaRegistros(LoadRecords.java:35)
at com.latam.alura.tienda.prueba.PruebaDeDesempenho.main(PruebaDeDesempenho.java:13)
Segun lo que indica este error se produce cuando el tipo especificado en la consulta TypedQuery no coincide con el tipo de entidad que se espera devolver."
Class Categoria:
package com.latam.alura.tienda.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "categorias")
public class Categoria {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nombre;
public Categoria() { }
public Categoria(String nombre) {
this.nombre = nombre; }
public Long getId() {
return id; }
public String getNombre() {
return nombre; }
public void setNombre(String nombre) {
this.nombre = nombre; }
}
Class Producto
package com.latam.alura.tienda.modelo;
import java.math.BigDecimal;
import java.time.LocalDate;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@SuppressWarnings("all")
@Entity
@Table(name="productos")
@NamedQuery(name="Producto.consultaDePrecio", query="SELECT P.precio FROM Producto AS P WHERE P.nombre=:nombre")
public class Producto {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String nombre;
private String descripcion;
private BigDecimal precio;
private LocalDate fechaDeRegistro = LocalDate.now();
@ManyToOne
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;
}
public Long getId() {
return 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; }
public LocalDate getFecha(){
return fechaDeRegistro; }
}