V S*_*ddy 1 objectify google-cloud-datastore
我有一个现有的数据存储实体,如下所示:
@Data
@Entity
public class Data
{
@Id @Index long id;
long subId;
boolean expired;
boolean claimed;
}
Run Code Online (Sandbox Code Playgroud)
我需要根据subId过滤数据,过期声明的字段,所以我使用datastore-indexes.xml创建了一个多索引,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="true">
<datastore-index kind=“Data” ancestor="false">
<property name=“subId” direction="asc" />
<property name="expired" direction="asc" />
<property name="claimed" direction="asc" />
</datastore-index>
</datastore-indexes>
Run Code Online (Sandbox Code Playgroud)
该实体完全是一个新实体,下面是添加到实体类中的两个新记录:
Column : Data
id : 1
subId : 1
expired : false
claimed : false
id : 2
subId : 1
expired : false
claimed : false
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用以下逻辑查询数据实体时,我确实得到空数据:
List<Data> data = ofy.load().type( Data.class )
.filter( "subId = ", 1 )
.filter( "expired = ", Boolean.FALSE )
.filter( "claimed = ", Boolean.FALSE )
.list();
Run Code Online (Sandbox Code Playgroud)
PS - 我看到索引状态当前是Serving和I,除了要正确检索的数据.如果遗漏什么,请帮帮我?
为了使实体显示在多属性索引中,必须为该实体中的每个字段编制索引.放上@Index三个字段并重新保存实体.
把@Index对id字段没有效果,顺便说一句.Id/parent字段不是真正的属性,它们只是密钥的一部分 - 它总是被索引.
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |