Google 应用引擎,对象化如何按子实体字段排序?
Google app engine, objectify how to order by a sub entity field?
我有一个包含以下字段的课程实体
@Index
private @Load
Ref<Student> student;
学生实体然后具有字段
@Index
private String matric;
我想加载所有课程实体 sorted 使用学生矩阵号。
我试过使用“.”运算符像这样获取子字段
ofy().load().type(Course.class).filter("course", course).order("student.matric").list();
但这return没有结果。
这可以吗?如何?
我认为使用 objectify 不可能做到这一点。我会让 Course 实现 Comparable:
@Entity
public class Course implements Comparable<Course> {
.
.
.
@Override
public int compareTo(Course otherCourse) {
return this.getStudent().getMatric().compareTo(otherCourse.getStudent().getMatric());
}
}
删除 Objectify 加载的 "order" 部分并改用 Collections.sort():
List<Course> courses = ofy().load().type(Course.class).filter("course", course).list();
Collections.sort(courses);
数据存储中没有连接。如果您想按学生属性查询您的课程,您可能需要将数据非规范化为课程并为其编制索引。这意味着更改学生数据也将需要更改课程。
顺便说一句:这个数据模型很奇怪。你确定你所说的课程不是真正的注册吗?
我有一个包含以下字段的课程实体
@Index
private @Load
Ref<Student> student;
学生实体然后具有字段
@Index
private String matric;
我想加载所有课程实体 sorted 使用学生矩阵号。
我试过使用“.”运算符像这样获取子字段
ofy().load().type(Course.class).filter("course", course).order("student.matric").list();
但这return没有结果。
这可以吗?如何?
我认为使用 objectify 不可能做到这一点。我会让 Course 实现 Comparable:
@Entity
public class Course implements Comparable<Course> {
.
.
.
@Override
public int compareTo(Course otherCourse) {
return this.getStudent().getMatric().compareTo(otherCourse.getStudent().getMatric());
}
}
删除 Objectify 加载的 "order" 部分并改用 Collections.sort():
List<Course> courses = ofy().load().type(Course.class).filter("course", course).list();
Collections.sort(courses);
数据存储中没有连接。如果您想按学生属性查询您的课程,您可能需要将数据非规范化为课程并为其编制索引。这意味着更改学生数据也将需要更改课程。
顺便说一句:这个数据模型很奇怪。你确定你所说的课程不是真正的注册吗?