Paginação no Hibernate

Ae galerinha, blza? É o seguinte, eu estou tentando fazer paginação no hibernate. Como eu faria utilizando setFirstResult e setMaxResult()? E outra coisa, eu vou utilizar um count pra evitar correr a base de dados inteira. Ele faz o controle por onde ele vai por baixo dos panos ou eu terei de controlar isso?

Obrigado

eu não conheço muito de Hibernate, o que eu uso pra paginação é isso:

this.session.createCriteria(Produto.class).setMaxResults(quantia).setFirstResult(inicio).list();

Deu essa exception aqui:

java.sql.SQLException: Parameter index out of range (3 > number of pa
rameters, which is 2).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2
715)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2
746)
at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:2697)
at org.hibernate.loader.Loader.bindLimitParameters(Loader.java:1618)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1557)
at org.hibernate.loader.Loader.doQuery(Loader.java:661)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lo
ader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2157)

O pessoal, da um help aqui. Eu sei que a minha duvida é meio escabrosa, mas sera que ninguem fez paginação com hibernate?