JPA...ajuda em fazer metodo usando count(*) em um tabela
8 respostas
P
paribe
Olá,
estou tentando implementar o metodo abaixo pra retornar a qtde registros de uma tabela
mas me dá erro o que pode ser que está errado …
se alguém puder me ajudar …
@SuppressWarnings("unchecked")publicintcount()throwsDaoException{Listlist=imsDBMng.getManager().createQuery("select count(*) from "+domainClass.getName()+" x").getResultList();Integercount=(Integer)list.get(0);returncount.intValue();}
a query "SELECT COUNT(*) FROM NOME_DA_CLASSE_MODEL", retorna um número,
e não uma lista de registros.
Portanto, troque seu método .getResultList() para getSingleResult();
Experimente desta forma:
@SuppressWarnings("unchecked")publicintcount()throwsDaoException{returnimsDBMng.getManager().createQuery("select count(*) from "+domainClass.getName()).getSingleResult();}
J
jairelton
Qual erro?
Tente algo assim:
public int count() throws DaoException {
Query query = imsDBMng.getManager().createQuery("select count(*) from " + domainClass.getName() + " x");
Integer count = (Integer) query.getSingleResult();
return count;
}
Pode ser também…
acho que está até mais correto que o meu, pois aqui se faz um “casting” para
Integer no resultado que a query traz
ajfilho
Use
no lugar de
Melhor performance.
Abraços!
P
paribe
o que fiz
@SuppressWarnings("unchecked")publicintcount()throwsDaoException{return(Integer)imsDBMng.getManager().createQuery("select count(0) from "+domainClass.getName()).getSingleResult();}
o que fiz e deu certo li na documentação qdo usa count
sempre retorna um Long então
/***@seeBaseDao#count()BaseDao.count()*/@SuppressWarnings("unchecked")publicintcount()throwsDaoException{Longresultado=newLong(0L);Queryquery=em.createQuery("select count(e) from "+domainClass.getName()+" e");resultado=(Long)query.getSingleResult();returnresultado.intValue();}}