Pol*_*oly 3 java google-app-engine
我查找了一堆模型 ID:
List<Long> ids = lookupIds(searchCriteria);
Run Code Online (Sandbox Code Playgroud)
然后我运行一个查询来订购它们:
fooModelList = (List<FooModel>) query.execute(ids);
Run Code Online (Sandbox Code Playgroud)
日志显示这是编译为的 GQL:
Compiling "SELECT FROM com.foo.FooModel WHERE
:p.contains(id) ORDER BY createdDateTime desc RANGE 0,10"
Run Code Online (Sandbox Code Playgroud)
当idsArrayList 很小时,这可以正常工作。
但超过一定大小(也许是 40?)我收到此错误:
IllegalArgumentException: Splitting the provided query requires
that too many subqueries are merged in memory.
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,或者这是 GAE 中的固定限制?
这是一个固定的限制。但是,如果您要按 ID 查找实体,那么您首先不应该执行查询 - 您应该按键进行提取。如果您通过外键进行查询,并且想要超过 40 个限制,则需要自己执行单独的查询 - 但您可能应该重新考虑您的设计,因为这是极其低效的。
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |