0

我基于实体的财产@id试图以一个查询中App Engine,我不断收到此错误过滤谷歌云存储实体通过@id属性在App Engine中

java.lang.IllegalArgumentException异常: __ __键过滤器值必须是一个关键

这就是我正在做我的查询

Filter f1 = new FilterPredicate("personId", FilterOperator.EQUAL,personId); 
Filter f2 = new FilterPredicate(Entity.KEY_RESERVED_PROPERTY, FilterOperator.GREATER_THAN,newestCommentId); 

Filter filter = CompositeFilterOperator.and(f1,f2); 


Query<Record> query = ofy().load().type(Record.class).filter(filter) 
       .limit(limit).order("-"+ Entity.KEY_RESERVED_PROPERTY); 

我想得到的一切>发送到App Engine的方法最后一个注释ID

在实体ID字段是这个

​​

我尝试使用id第一,但后来我得到一个错误说,你不能使用一个文件谁拥有@id,也许我的意思__键__

那么我该如何执行此查询?

回答

1

您需要在您的过滤器中使用use a Key而非ID。您可以从此ID创建一个密钥,然后传递给您的过滤器。

请注意,除非您自己增加ID,否则在添加更多实体时它们不能保证增长。

+0

所以一个id是唯一的,但不一定像SQL主键一样。 – tyczj

+0

啊是的,我现在看到了,谢谢! – tyczj

相关问题