Jpa - verificar se existe registros ou não[RESOLVIDO]

8 respostas
jpa
Cleiton_Conceicao

gente como faço pra verificar se existe registro ou não ?

package com.cleiton.consultas;
import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.TypedQuery;

import com.cleiton.cadastro.Usuario;
import com.cleiton.topicos2.Consultar;

public class ValidarUsuario {

public static void main(String[] args)

{

Consultar consulta = new Consultar ();

EntityManager obconsulta = consulta.getEntityManager();
String query = "select count(U) from CADASTRO_USUARIO U where U.USR_EMAIL=:email and U.USR_SENHA=:senha";
	
	TypedQuery<Usuario> usuario = obconsulta.createQuery(query,Usuario.class);
	usuario.setParameter("email", "[email removido]");
	usuario.setParameter("senha", "1");
	List<Usuario> resultado = usuario.getResultList();
	obconsulta.close();
	for (Usuario usuarios : resultado){
		System.out.println("Usuario:" + usuarios);
		
		
}

}
}

8 Respostas

javaflex
TypedQuery<Long> query = em.createQuery(
      "SELECT COUNT(u) FROM Usuario u WHERE ..", Long.class);
  long total = query.getSingleResult();
Cleiton_Conceicao

está dando erro.
o que seria esse Long.class?

eu fiz assim.

package com.cleiton.consultas;
import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.TypedQuery;

import com.cleiton.cadastro.Usuario;
import com.cleiton.topicos2.Consultar;

public class ValidarUsuario {

public static void main(String[] args)

{

Consultar consulta = new Consultar ();

EntityManager obconsulta = consulta.getEntityManager();
TypedQuery<Long> query = obconsulta.createQuery(  "SELECT COUNT() FROM CADASTRO_USUARIO U WHERE U.USR_EMAIL=:email and U.USR_SENHA=:senha", Long.class);
	 long total = query.getSingleResult();
	 query.setParameter("email", "[email removido]");
	 query.setParameter("senha", "1");

		if(total>=0){
			System.out.println("entrou");
		}
		System.out.println("não entrous");

}
}

Cleiton_Conceicao

está retornando esse erro

Exception in thread main java.lang.IllegalArgumentException: org.hibernate.QueryException: Named parameter [senha] not set

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)

at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1471)

at com.cleiton.consultas.ValidarUsuario.main(ValidarUsuario.java:21)

Caused by: org.hibernate.QueryException: Named parameter [senha] not set

at org.hibernate.query.internal.QueryParameterBindingsImpl.verifyParametersBound(QueryParameterBindingsImpl.java:251)

at org.hibernate.query.internal.AbstractProducedQuery.beforeQuery(AbstractProducedQuery.java:1313)

at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1412)

at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1463)

 1 more
javaflex

Você deve chamar getSingleResult depois que setar os parametros.

Cleiton_Conceicao

seria isso?

query.setParameter("email", "[email removido]");
	query.setParameter("senha", "1");
	query.getSingleResult();
Cleiton_Conceicao

só dá erro quando eu passo os filtros.

javaflex
TypedQuery<Long> query = obconsulta.createQuery("SELECT COUNT(U) FROM CADASTRO_USUARIO U WHERE U.USR_EMAIL=:email and U.USR_SENHA=:senha", Long.class);

query.setParameter("email", "[email removido]");
query.setParameter("senha", "1");

long total = query.getSingleResult();

...

Sobre getSingleResult: http://www.objectdb.com/api/java/jpa/Query/getSingleResult

Cleiton_Conceicao

funcionou!!
obrigado!!

Criado 4 de novembro de 2017
Ultima resposta 4 de nov. de 2017
Respostas 8
Participantes 2