Consulta jpa jpql java

7 respostas
M

Boa noite galera,

Estou tentando efetuar uma consulta em meu banco de dados para que ele some apenas determinado registro que haja tais informações (WHERE), porém, estou recebendo o seguinte erro:

Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing [select sum(renda1.valor) from Renda renda1 WHERE renda1.usuario_cpf = :r.usuario_cpf].
[70, 84] The named input parameter ‘’{0}’’ is not following the rules for a Java identifier.

Meu código:

String cpf;
cpf = usuario.getCpf();
Query query = em.createQuery("select sum(renda1.valor) from Renda renda1 " + "WHERE renda1.usuario_cpf = :r.usuario_cpf");
query.setParameter("r.usuario_cpf", cpf);
Object object = query.getSingleResult();
System.out.println(object);
return (Double) object;

Observações: “usuario_cpf” é o nome da coluna que fará a tratativa com o “WHERE”.

7 Respostas

pmlm

Tira o r. do parâmetro:

Query query = em.createQuery("select sum(renda1.valor) from Renda renda1  WHERE renda1.usuario_cpf = :usuario_cpf" );
	query.setParameter("usuario_cpf", cpf);
M

Retirei, porém apresentou o erro:

javax.servlet.ServletException: An exception occurred while creating a query in EntityManager: 
Exception Description: Problem compiling [select sum(renda1.valor) from Renda renda1  WHERE renda1.usuario_cpf = :usuario_cpf]. 
[49, 67] The state field path 'renda1.usuario_cpf' cannot be resolved to a valid type.
root cause
pmlm

A tua class Renda tem o atributo usuario_cpf ?

J

Bom dia,

Tenta fazer da seguinte maneira:

String cpf;

cpf = usuario.getCpf();

Query query = em.createQuery("select sum(renda1.valor) from Renda renda1 WHERE renda1.usuario_cpf = " + cpf);

Object object = query.getSingleResult();

System.out.println(object);

return (Double) object;
pmlm

Além de esta não ser a maneira correta de fazer, não vai resolver em nada o problema dele.

J

pmlm

Vamos esperar ele fazer o teste, senão funcionar, pensaremos em outra solução.

M

Olá amigos, obrigado pela atenção. Consegui resolver da seguinte maneira:

String sql = "select sum(valorpoupanca) from Poupanca where usuario_cpf=?1";
			Object object = em.createNativeQuery(sql).setParameter(1, usuario.getCpf()).getSingleResult();

Utilizando o nativeQuery consegui resolver.
Obrigado.

Criado 10 de outubro de 2016
Ultima resposta 12 de out. de 2016
Respostas 7
Participantes 3