객체의 페이지 매기기를 간단하게 만들 필요가 있지만 매뉴얼을 읽을 때 query.setRange (5, 10); 5 개의 객체 만 필요로 할 때조차도 10 개의 객체를 가져옵니다.Google App Engine에서 Java로 페이지 매기기
필요한 개체를 가져 오는 방법이 있습니까?
EDIT : 나는 현상금을 시작 했으므로, Java에서 작동하는 간단한 예제 코드를 보여줄 수 있습니다. 그러면 대답을 수락합니다.
객체의 페이지 매기기를 간단하게 만들 필요가 있지만 매뉴얼을 읽을 때 query.setRange (5, 10); 5 개의 객체 만 필요로 할 때조차도 10 개의 객체를 가져옵니다.Google App Engine에서 Java로 페이지 매기기
필요한 개체를 가져 오는 방법이 있습니까?
EDIT : 나는 현상금을 시작 했으므로, Java에서 작동하는 간단한 예제 코드를 보여줄 수 있습니다. 그러면 대답을 수락합니다.
페이지 설정을 수행하려는 경우 setRange 대신 cursors을 사용하는 것이 좋습니다.
http://code.google.com/appengine/articles/paging.html
예제는 파이썬에 있지만, 그들은 당신이 아마 꽤 쉽게 자바 번역 할 수있을만큼 간단한 위치 :
는 앱 엔진 사이트에 바로이 주제에 대한 기사가있다.
Here's a Java implementation (읽지 않았거나 테스트하지 않은 항목)
10 개체가 데이터베이스에서 반환되는 경우 왜 문제가됩니까? 당신은 당신이 관심을 갖는 5 개의 객체 만 반환됩니다 (처음 5 개는 버려집니다).
setRange 메서드가 매우 잘 확장되는 솔루션이라고 생각하기 때문에 묻지 않습니다. 그러나 적절한 경우보다 적절하고 간단하고 합리적인 솔루션입니다.
매우 큰 테이블을 페이징하거나 비싼 조인을 통합 할 계획입니까? 그렇지 않다면 setRange를 페이지 매김의 시작점으로 사용하고 싶은 유혹을받을 것입니다.
이것에 대해 어떻게 :
How to use datastore cursors with jpa on GAE
또한 :
List<Employee> results = (List<Employee>) query.execute();
// Use the first 20 results...
Cursor cursor = JPACursorHelper.getCursor(results);
String cursorString = cursor.toWebSafeString();
// Store the cursorString...
// ...
// Query query = the same query that produced the cursor
// String cursorString = the string from storage
Cursor cursor = Cursor.fromWebSafeString(cursorString);
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
query.setRange(0, 20);
List<Employee> results = (List<Employee>) query.execute();
// Use the next 20 results...
에서
또는 JPA없이 참조 :
http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Cursor.html