【发布时间】:2014-03-20 12:29:22
【问题描述】:
我有一个现有的数据存储实体,如下所示:
@Data
@Entity
public class Data
{
@Id @Index long id;
boolean expired;
}
我需要根据 expired 字段过滤数据,因此我必须更改实体以使归档过期现在被索引。修改后的实体如下:
@Data
@Entity
public class Data
{
@Id @Index long id;
@Index boolean expired;
}
以下是创建索引之前数据存储区中的现有数据:
列:数据
id : 1
过期:是的
id : 2
过期:假
id : 3
过期:假
我的意图是使用带有过期过滤器的objectify来获取数据,所以我修改了我的代码以使用下面的objectify查询:
return (List<Data>) ofy.load().type( Data.class ).filter( "expired = ", false ).list();
它应该返回两条记录,但它没有返回任何内容。 顺便说一句,创建索引后,我在实体中添加了一条新记录,如下所示
id : 4
过期:假
如果我返回查询,我现在看到一个结果,即 id = 4。似乎过滤器仅适用于新添加的记录,而索引 dint 适用于所有旧记录?如何解决这个问题?
【问题讨论】:
标签: google-app-engine google-cloud-datastore objectify