Hi,
Cursor provides a "point" so that query will execute after that.
I don't think you can achieve the same thing with query.setFirstResult()
Below is code I ran based on consulting JDO example and JPA javadocs. Hope
this helps
EntityManager em = ...
Query query = em.createQuery(queryString);
query.setMaxResults(pageSize);
List<User> users = query.getResultList();
if (users.size() == pageSize) {
Cursor cursor = JPACursorHelper.getCursor(users);
if (cursor != null) {
String cursorString = cursor.toWebSafeString();
// store cursorString for later use
}
}
....
Query query = em.createQuery(queryString); // same query above
query.setMaxResults(pageSize);
Cursor cursor = Cursor.fromWebSafeString(cursorString);
if (cursor != null) {
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
}
List<User> users = query.getResultList();
...
On Thu, May 6, 2010 at 5:27 AM, fvisticot <[email protected]> wrote:
> I do not see any documentation regarding cursor support with JPA.
>
> Is the following code the correct way to use cursors ?
> In this sample code, i will retrieve users from 300 to 320
> (query.setMaxResults(20); query.setFirstResult(300);)
>
> The test is OK with the Local Eclipse GAE plugin
>
> @Test
> public void getUsersCursorTest() {
> EntityManagerFactory emf = null;
> EntityManager em = null;
> emf = AppEntityManagerFactory.get();
> try {
> em = emf.createEntityManager();
> Query query = em.createNamedQuery("User.findAll");
> query.setMaxResults(20);
> query.setFirstResult(300);
> List<User> users = query.getResultList();
> _logger.info("UsersWithMax: " + users.size());
> for (User user: users) {
> _logger.info("User: " + user);
> }
> } finally {
> if (em != null)
> em.close();
> }
> }
>
> --
> 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
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine-java%[email protected]>
> .
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.