Google app engine 未创建对象化索引

Google app engine 未创建对象化索引,google-app-engine,google-cloud-platform,objectify,Google App Engine,Google Cloud Platform,Objectify,我尝试在google应用程序引擎standart环境中使用objectify并得到异常。我的课程是这样的: @Entity public class Company { @Id Long id; @Index String companyName; public Company() { } public Company(Long id, String companyName) { this.id=id; this.com

我尝试在google应用程序引擎standart环境中使用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
    }
}

没有订单(“projectName”)查询就可以正常工作。从数据存储中删除了所有此类实体,然后添加了新实体,但仍会得到此异常。如果这很重要,我用的是Gradle,而不是Maven。创建索引或smth可能需要额外的构建步骤。

您正在对多个属性进行筛选(好吧,祖先计算为“另一个属性”),因此您需要在
datastore index.xml
中定义多属性索引

请参阅官方文档:

可能的副本
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