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