未创建 Objectify 索引

Objectify index is not created

我尝试在 google App Engine 标准环境中使用 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

Without order("projectName") 查询工作得很好。从数据存储中删除了所有此类实体,而不是添加新实体,仍然出现此异常。如果这很重要,我使用 Gradle,而不是 Maven。也许应该是额外的构建步骤来创建索引或 smth。

您正在过滤多个属性(好吧,祖先算作 'another property')因此您需要在 datastore-indexes.xml.

中定义的多 属性 索引

查看官方文档:https://cloud.google.com/appengine/docs/standard/java/config/indexconfig