Ola pessoal,
Estou tomando esse erro:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class [br.com.alura.loja.vo.RelatorioDeVendasVo] [SELECT new br.com.alura.loja.vo.RelatorioDeVendasVo(produto.nome, SUM(item.quantidade), MAX(pedido.dataCadastro)) FROM br.com.alura.loja.modelo.Pedido pedido JOIN pedido.itens item JOIN item.produto produto GROUP BY produto.nome ORDER BY item.quantidade DESC]
Ao tentar executar a query com select new mais o canonical name da classe br.com.alura.loja.vo.RelatorioDeVendasVo, e nao vai.
package br.com.alura.loja.dao;
import br.com.alura.loja.modelo.Pedido;
import br.com.alura.loja.vo.RelatorioDeVendasVO;
import javax.persistence.EntityManager;
import java.math.BigDecimal;
import java.util.List;
public class PedidoDAO {
private EntityManager em;
public PedidoDAO(EntityManager em) {
this.em = em;
}
public void cadastrar(Pedido pedido) {
this.em.persist(pedido);
}
public BigDecimal valorTotalVendido() {
String jpql = "SELECT SUM(p.valorTotal) FROM Pedido p";
return em.createQuery(jpql, BigDecimal.class).getSingleResult();
}
public List<br.com.alura.loja.vo.RelatorioDeVendasVO> relatorioDeVendas() {
String jpql = "SELECT new br.com.alura.loja.vo.RelatorioDeVendasVo(" +
"produto.nome, " +
"SUM(item.quantidade), " +
"MAX(pedido.dataCadastro)) " +
"FROM Pedido pedido " +
"JOIN pedido.itens item " +
"JOIN item.produto produto " +
"GROUP BY produto.nome " +
"ORDER BY item.quantidade DESC";
return em.createQuery(jpql, RelatorioDeVendasVO.class).getResultList();
}
}
package br.com.alura.loja.vo;
import java.time.LocalDate;
public class RelatorioDeVendasVO {
private String nomeProduto;
private Long quantidadeVendida;
private LocalDate dataUltimaVenda;
public RelatorioDeVendasVO(String nomeProduto, Long quantidadeVendida, LocalDate dataUltimaVenda) {
this.nomeProduto = nomeProduto;
this.quantidadeVendida = quantidadeVendida;
this.dataUltimaVenda = dataUltimaVenda;
}
@Override
public String toString() {
return "RelatorioDeVendasVO{" +
"nomeProduto='" + nomeProduto + '\'' +
", quantidadeVendida=" + quantidadeVendida +
", dataUltimaVenda=" + dataUltimaVenda +
'}';
}
}
Alguem tem alguma dica ?