GetRow Count Hibernate Dúvida

4 respostas
S

A princípio pareceu algo tão simples apenas obter um inteiro quando na realidade esta bendição parecia apenas retornar um bendito LONG....
a dúvida é essa, abaixo o código, necessário para uma paginação, mas obtenho apenas uma excessão ao executá-lo:

public Integer count(List<Criterion> restricoes) {

		Criteria c = this.session.createCriteria(this.persistentClass);
		if (restricoes != null) {
			for (Criterion criterion : restricoes) {
				c.add(criterion);
			}
		}
		return (int) c.setProjection(Projections.rowCount()).uniqueResult();

	}
Excessão obtida ao executar:
Hibernate: 
    /* criteria query */ select
        count(*) as y0_ 
    from
        TB_ATENDIMENTO this_
Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
	at br.com.agets.dao.hibernate.HibernateGenericDAO.count(HibernateGenericDAO.java:46)
	at br.com.agets.util.TestaConta.main(TestaConta.java:21)

Pessoal a dúvida é que ao obter este resultado preciso retornar um Int, porém não consigo. apesar de já tentar o parse não resolve...
Como proceder?

4 Respostas

marcos1EM

Associe o retorno do uniqueResult a uma variável do tipo Long e utilize o método intValue() para retornar o inteiro.

S
Olá, Marcos, tudo bem? Seria assim?
public Integer count(List<Criterion> restricoes) {
		Number size = 0;
		Criteria c = this.session.createCriteria(this.persistentClass);
		if (restricoes != null) {
			for (Criterion criterion : restricoes) {
				c.add(criterion);
			}
		}
		size = ((Long) c.setProjection(Projections.rowCount()).uniqueResult());
		return size.intValue();

	}
marcos1EM

Sim

S

Muito obrigado, Marcos.

Criado 23 de fevereiro de 2013
Ultima resposta 27 de fev. de 2013
Respostas 4
Participantes 2