EntityQuery : paging problem, only 1st and 2th page does wor
mark.wigmans Nov 11, 2007 3:31 PMWhen I use paging via a subclass of EntityQuery I noticed that only the first page and second page work, but after that I can't step to the 3rd page.
The value of firstResult is always 'null' when the next() call is started.
I use:
jboss seam 2.0.0. GA
jboss AS 4.2.2 GA
I test with 8 records in the database
------------------------ cardslist.java ----------------
import org.jboss.seam.annotations.Logger; import org.jboss.seam.annotations.Name; import org.jboss.seam.framework.EntityQuery; import org.jboss.seam.log.Log; @Name("cardsList") public class CardsList extends EntityQuery { private static final long serialVersionUID = 1L; @SuppressWarnings("unused") @Logger static private Log log; /** * default constructor */ public CardsList() { setMaxResults(2); setOrder("id"); } @Override public String getEjbql() { return "select cards from Cards cards"; } /** * @see org.jboss.seam.framework.Query#setFirstResult(java.lang.Integer) */ @Override public void setFirstResult(Integer firstResult) { log.error("set first result:" + firstResult); super.setFirstResult(firstResult); } /** * @see org.jboss.seam.framework.Query#getFirstResult() */ @Override public Integer getFirstResult() { log.error("get first result:" + super.getFirstResult()); return super.getFirstResult(); } @Override public void next() { log.error("first result:" + getFirstResult()); log.error("max result:" + getMaxResults()); log.error("next first result:" + getNextFirstResult()); super.next(); } /** * otherwise the isNextExists() call result in a bad result the first page. */ @Override public boolean isNextExists() { return getResultList() != null && getResultCount() > (getFirstResult() != null ? getFirstResult() : 0) + getMaxResults(); } }
------------------------------ part of cardslist.xhtml -----------------------------
<h:outputText value="Item #{cardsList.firstResult + 1}..#{cardsList.firstResult + cardsList.maxResults} of #{cardsList.resultCount}"/> <h:commandLink action="#{cardsList.previous}" value="Previous #{cardsList.maxResults} " rendered="#{cardsList.previousExists}"/> <h:commandLink action="#{cardsList.next}" value="Next #{cardsList.maxResults}" rendered="#{cardsList.nextExists}"/>