【问题标题】:Objectify index is not created未创建 Objectify 索引
【发布时间】:2018-06-25 02:41:08
【问题描述】:

我尝试在 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

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

【问题讨论】:

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


【解决方案1】:

您正在过滤多个属性(嗯,祖先算作“另一个属性”),因此您需要在 datastore-indexes.xml 中定义的多属性索引。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多