没有创建Objectify索引

时间:2018-01-16 11:39:26

标签: google-app-engine google-cloud-platform objectify

我尝试在谷歌应用引擎标准环境中使用objectify并获得异常。我的课程看起来像这样:

@Entity
public class Company {
    @Id Long id;
    @Index String companyName;

    public Company() {
    }

    public Company(Long id, String companyName) {
        this.id=id;
        this.companyName = companyName;
    }
}

@Entity
public class CompanyProject {
    @Id Long id;
    @Index String projectName;
    @Parent Key<Company> owner;

    public String cost;

    public CompanyProject() {
    }

    public CompanyProject(long userId, String projectName) {
        this();
        this.projectName = projectName;
        owner = Key.create(Company.class, userId); // Creating the Ancestor key
    }
}

当我查询这样的数据时:

Key<Company> theUser = Key.create(Company.class, 1);
Iterable<CompanyProject> projects = ObjectifyService.ofy().load().type(CompanyProject.class).ancestor(theUser).order("projectName").list();

我得到例外

com.google.cloud.datastore.DatastoreException: no matching index found. recommended index is:
- kind: CompanyProject
  ancestor: yes
  properties:
  - name: projectName

没有订单(&#34; projectName&#34;)查询工作正常。从数据存储中删除了所有此类实体,而不是添加新实体,仍然会获得此异常。如果这很重要,我会使用Gradle,而不是Maven。也许应该是额外的构建步骤来创建索引或smth。

1 个答案:

答案 0 :(得分:1)

您正在过滤多个属性(嗯,祖先计为&#39;另一个属性&#39;)因此您需要在session_start();中定义多属性索引。

请参阅官方文档:https://cloud.google.com/appengine/docs/standard/java/config/indexconfig