Hi Jeff,

With JPA I will need to excute getResultList() to get a collection
http://java.sun.com/javaee/5/docs/api/javax/persistence/Query.html#getResultList()
Somehow org.datanucleus.store.appengine.query.getCursor(Iterator<?> iter)
can not get the cursor in the middle of my iterator, a null value is
returned in sample code below.
I guess getCursor() has something to do with the List returned.

EntityManager em =
Query query = em.createQuery(queryString);
query.setMaxResults(pageSize + 1);
em.getTransaction().begin();
Iterator<TestEntity> iterator = query.getResultList().iterator();
List<TestEntity> list = new ArrayList<TestEntity>();
for (int i = 0; (i < pageSize) && iterator.hasNext(); i++) {
    list.add(iterator.next());
}
Cursor cursor = JPACursorHelper.getCursor(iterator);
// assert iterator.hasNext() == true and cursor == null
em.getTransaction().rollback();

Just my curious:
if I'm able to iterate through the result (using
com.google.appengine.api.datastore.QueryResultIterator<T>)
is it true that each iterator.hasNext() will lazily load entity from the
data store?
My concern is it might cost me more time that way than using
Query.getResultList(). Please advise.

Thank you.

On Fri, May 7, 2010 at 2:24 AM, Jeff Schnitzer <j...@infohazard.org> wrote:

> I'm a little confused by this.  Why doesn't the OP's approach work?
>
> 1) Create query, fetch with limit of 21 items
> 2) Iterate through 20 items
> 3) Get cursor to be used for next page (if necessary)
> 4) Iterate to 21st item just to check for existence
>
> Why won't this work?  The documentation seems to imply that this is
> how cursors work...
>
> Jeff
>
> On Thu, May 6, 2010 at 1:03 AM, Ikai L (Google) <ika...@google.com> wrote:
> > This is a datastore limitation and not related to JDO/JPA, so you won't
> be
> > able to do this in Objectify either (you can look at the low-level API,
> it
> > doesn't provide this functionality). I believe I saw an issue in the
> issues
> > tracker about creating cursors from arbitrary locations.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine for Java" group.
> > To post to this group, send email to
> google-appengine-j...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/google-appengine-java?hl=en.
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to