Consulta banco de dados, cláusula WHERE não funciona
8 respostasResolvido
M
Mayquedevilstriangle
Boa noite amigos,
Minha cláusula WHERE escrita da seguinte forma não está funcionando:
publicList<Renda>retornaListaRenda(StringidUsuarioSession){
StringBufferhql=newStringBuffer();hql.append("select r FROM Renda r ");hql.append("JOIN Usuario u ");hql.append("WHERE u.cpf = :idUsuario ");List<Renda>rendas=em.createQuery(hql.toString()).setParameter("idUsuario",idUsuarioSession).getResultList();returnrendas;}
Até ai tudo bem, ele me traz os resultados do banco de dados, porém, ele não está filtrando pela cláusula WHERE, no caso, o “CPF”, então está me trazendo todas as rendas cadastradas, inclusive as de outros “CPFs” (Outros usuários).
Ja debuguei o código e comprovei que ele recebe o CPF da variável: idUsuarioSession .
Tenho uma coluna USUARIO_CPF na minha tabela Renda, como ficaria o restante do código?
tentei da seguinte maneira:
hql.append("select d from Despesa d ");hql.append("JOIN Usuario u ");hql.append("WHERE u.cpf = :idUsuario ");Queryquery=em.createQuery(hql.toString());query.setParameter("idUsuario",idUsuarioSession);
Porém sem sucesso… ele traz todas as informações ignorando o Where…
peczenyj1 like
descreve as tabelas Despesa e Usuario.
M
Mayquedevilstriangle
Segue:
RENDA:
USUARIO:
Observação: A coluna USUARIO_CPF é uma FK mapeada em meu código com @ManyToOne e @OneToMany.
M
Mayquedevilstriangle
Olá amigos, consegui resolver…
O problema era no mapeamento de r.Usuario … eu estava utilizando o “U” maiúsculo… troquei para minúsculo e funcionou!.