Google App Engine:JPA仍然存在1000条记录限制?

时间:2010-02-15 08:33:50

标签: java google-app-engine jpa

新的release 1.3.1 of GAE已经删除了1000条记录限制:

  

不超过1000个结果限制 - 那就是   右:加上游标和   许多小人物的高潮   数据存储的稳定性和性能   过去几个月的改进,   我们现在有足够的信心去除   最大限度的结果限制。

然而,release notes指向detail description的{{3}}链接未提及JPA,仅提及JDO和低级API:

  

在JDO中,您可以使用扩展名和   要使用的JDOCursorHelper类   带有JDO查询的游标。

未提及JPA,如果n大于1000,则使用query.setFirstResult(n)的测试仍会显示相同的错误消息。

java.lang.IllegalArgumentException: offset may not be above
1000
        at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java: 33)
        at
com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java:
60)
        at
com.google.appengine.api.datastore.PreparedQueryImpl.runQuery(PreparedQueryImpl.java:
115) ...

选择计数(*)

我还发现有{1000多个实例的select count(*) from MyEntity会返回1000。

3 个答案:

答案 0 :(得分:2)

版本1.3.6删除了限制:

版本1.3.6 - 2010年8月17日

  

数据存储计数()查询的结果   和所有数据存储区查询的偏移量   不再限制在1000。

http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes

答案 1 :(得分:0)

“详细描述”中的JDO“扩展”等同于查询上的JPA“提示”,那么为什么不为JPA查询设置相同的提示呢?

Cursor cursor = Cursor.fromWebSafeString(cursorString); query.setHint(JDOCursorHelper.CURSOR_EXTENSION,cursor);

答案 2 :(得分:0)

我正在使用JPA访问Google数据存储区,并且一次可以获取超过3000条记录。我不认为这个限制仍然存在。