Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

error si no commiteo la @namedquery

hola; me sale el siguiente error:

ERROR: HHH000177: Error in named query: Producto.consultarPorNombreDeCateg
org.hibernate.QueryException: could not resolve property: nombre of: com.latam.alura.tienda.modelo.Categoria [SELECT p FROM com.latam.alura.tienda.modelo.Producto AS p WHERE p.categoria.nombre =: nombre]
    at org.hibernate.QueryException.generateQueryException(QueryException.java:120)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:220)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
    ...

la unica solucion fue commitear la @namedqueriy:

package com.latam.alura.tienda.modelo;

import java.math.BigDecimal;
import java.time.LocalDate;

//@SuppressWarnings("all")
@Entity
@Table(name = "productos")
**//@NamedQuery(name="Producto.consultarPorNombreDeCateg", query = "SELECT p FROM Producto AS p WHERE p.categoria.nombre =: nombre")**
@Inheritance(strategy = InheritanceType.JOINED)
public class Producto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    //@Column(name="nombres") Por si hay diferencia entre el nombre d elos atributos y el nombre de la columna en la DB
    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 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;
    }


}

que puede ser?

2 respuestas
solución!

Hola Juan,

Me parece que ese error se debe a que siguiendo lo que hizo el instructor en el curso modificaste la clase Categoria que antes tenía la variable nombre, pero se eliminó esa variable y en su lugar ahora solo tiene la variable categoriaId, por lo tanto cuando intentas acceder a la variable nombre de la siguiente manera: p.categoria.nombreya no lo encuentra.

(Esa p vendría a representar Producto, la referencia p.categoria.nombre intenta acceder a la variable nombre que a su vez debe estar en la clase Categoría que a su vez debe estar en la clase Producto)

Podrías intentar comentar o eliminar el método que lo ejecuta el cual es consultarPorNombreDeCateg

gracias!!!