GetRow Count Hibernate Dúvida

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:

[code] 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();

}[/code]

Excessão obtida ao executar:

[code]

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)[/code]

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?

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

Olá, Marcos, tudo bem?
Seria assim?

[code]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();

}[/code]

Sim

Muito obrigado, Marcos.