Ao aplicar a classe RelatorioDeVendasVo passou a falhar.
em PedidoDao.java:
public List<RelatorioDeVendasVo> relatorioDeVendas() {
String jpql =
"SELECT new br.com.alura.loja.vo.RelatorioDeVendasVo("
+ "produto.nome, "
+ "SUM(item.quantidade) As Quantidade, "
+ "MAX(pedido.dataInclusao))"
+ "FROM Pedido pedido "
+ "JOIN pedido.itens item "
+ "JOIN item.produto produto "
+ "GROUP BY produto.nome "
+ "ORDER BY Quantidade DESC";
return em.createQuery(jpql, RelatorioDeVendasVo.class)
.getResultList();
}
Observaçao. Eu tive que colocar alias na coluna quantidade (SUM(item.quantidade) As Quantidade) pois nao rodava no MSSQL.
Falha ao executar:
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.query.sqm.InterpretationException: Error interpreting query [SELECT new br.com.alura.loja.vo.RelatorioDeVendasVo(produto.nome, SUM(item.quantidade) As Quantidade, MAX(pedido.dataInclusao))FROM Pedido pedido JOIN pedido.itens item JOIN item.produto produto GROUP BY produto.nome ORDER BY Quantidade DESC]; this may indicate a semantic (user query) problem or a bug in the parser at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:193) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:200) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:666) at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23) at br.com.alura.loja.dao.PedidoDao.relatorioDeVendas(PedidoDao.java:44) at br.com.alura.loja.testes.CadastroDePedido.main(CadastroDePedido.java:47) Caused by: org.hibernate.query.sqm.InterpretationException: Error interpreting query [SELECT new br.com.alura.loja.vo.RelatorioDeVendasVo(produto.nome, SUM(item.quantidade) As Quantidade, MAX(pedido.dataInclusao))FROM Pedido pedido JOIN pedido.itens item JOIN item.produto produto GROUP BY produto.nome ORDER BY Quantidade DESC]; this may indicate a semantic (user query) problem or a bug in the parser at org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:95) at org.hibernate.internal.AbstractSharedSessionContract.lambda$createQuery$1(AbstractSharedSessionContract.java:653) at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.resolveHqlInterpretation(QueryInterpretationCacheStandardImpl.java:123) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:651)