Eu preciso fazer uma listagem onde preciso apenas de 3 campos de uma tabela.
Tentei fazer assim.
Meu dao.
public List<ProdutoEmpresa> buscamenorpreco() {
return (List<ProdutoEmpresa>) session.createSQLQuery("select cod_empresa, cod_produto, preco from ProdutoEmpresa where ativo=1 AND cod_produto=8");
}
Meu controller.
//Lista todos - teste
@Get("/produtoEmpresa2")
public List<ProdutoEmpresa> lista2() {
return dao.buscamenorpreco();
}
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.ClassCastException: org.hibernate.internal.SQLQueryImpl cannot be cast to java.util.List
Esse código está errado: return (List) session.createSQLQuery(“select cod_empresa, cod_produto, preco from ProdutoEmpresa where ativo=1 AND cod_produto=8”);
[code]
public List<ProdutoEmpresa> buscamenorpreco() {
return (List<ProdutoEmpresa>) session.createSQLQuery(“select cod_empresa, cod_produto, preco from ProdutoEmpresa where ativo=1 AND cod_produto=8”).list();
}[/code]
Funciou, mas ficou em branco a jsp.
E quando faço a consulta no braço no banco, ta funcionando.
Olha minha jsp como ficou.
[quote=101574]Eu quero fazer uma consulta utilizando o sql.
Tem como não?[/quote]
O que ela retornou? uma lista vazia? não retornou nada? foi lançada uma exceção?
[quote=101574]Não sei se ajuda. Mas no console não tem erro não.
E tem a consulta que eu fiz la.
Olha so.
Hibernate:
select
cod_empresa,
cod_produto,
preco
from
ProdutoEmpresa
where
ativo=1
AND cod_produto=8;
[/quote]
Tá certo, você respondeu uma das questões, então refaço a pergunta reformulada:
O que ela retornou? uma lista vazia? não retornou nada?
public List<ProdutoEmpresa> listaTudo() {
List resultado = this.session.createCriteria(ProdutoEmpresa.class).list();
resultado.add( Restrictions.like("cod_produto", "8"));
return resultado;
}
Dei uma estudada. Documentação do Hibernate.
So que está dando o erro.
br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property 'empresa2' not found on type org.hibernate.criterion.SimpleExpression
Quando eu tiro o Restrictions.like.
Ele lista normalmente. Pq eu não consigo utiiza-lo. Pois, utilizando eu consigo fazer a minha consulta pelo próprio Hibernate, não precisaria do SQL.
explicando o que está acontecendo: qdo vc usa uma SQLQuery ele nao vai te retornar uma List, vai ser sempre List<Object[]> (mas da pra transformar em algum objeto melhor)
o erro que ta dando na criteria eh pq vc esqueceu de chamar o metodo list() no final.