使用 Google App Engine 数据存储中的实体列表
Using lists of entities in Google App Engine Datastore
我正在使用 objectify 和 Google App Engine(由他们的数据存储项目支持)。我对实体列表的工作方式有点困惑。
我有一些 Student 个实体,还有一些 Teacher 个实体。
我希望老师有一个学生 属性,即学生[=的列表37=] 个实体。
这看起来很简单,而且似乎工作正常。但是,我今天才注意到,当我修改 Student 的 属性 时,它似乎并没有更新 Student各种教师的学生列表。例如,如果我更改了一个学生的名字并保存了它,那么老师的学生名单仍然是旧名字。几乎就像老师拥有该对象的本地版本一样。
对吗?有什么办法可以存储实际对象?还是我必须做一些事情,比如只存储 ID?
如有任何帮助,我们将不胜感激。
下面是类,供参考:
@Entity
@Index
public class StudentObj {
@Id public Long id;
public String StudentName;
}
@Entity
@Index
public class TeacherObj {
@Id public Long id;
public String TeacherName;
public List<StudentObj> students;
}
提前致谢!
通过使用 List<Student>
,您将学生数据嵌入到教师对象中。要为独立实体创建 link,请在您的教师中存储 List<Key<Student>>
或 List<Ref<Student>>
。
我正在使用 objectify 和 Google App Engine(由他们的数据存储项目支持)。我对实体列表的工作方式有点困惑。
我有一些 Student 个实体,还有一些 Teacher 个实体。
我希望老师有一个学生 属性,即学生[=的列表37=] 个实体。
这看起来很简单,而且似乎工作正常。但是,我今天才注意到,当我修改 Student 的 属性 时,它似乎并没有更新 Student各种教师的学生列表。例如,如果我更改了一个学生的名字并保存了它,那么老师的学生名单仍然是旧名字。几乎就像老师拥有该对象的本地版本一样。
对吗?有什么办法可以存储实际对象?还是我必须做一些事情,比如只存储 ID?
如有任何帮助,我们将不胜感激。
下面是类,供参考:
@Entity
@Index
public class StudentObj {
@Id public Long id;
public String StudentName;
}
@Entity
@Index
public class TeacherObj {
@Id public Long id;
public String TeacherName;
public List<StudentObj> students;
}
提前致谢!
通过使用 List<Student>
,您将学生数据嵌入到教师对象中。要为独立实体创建 link,请在您的教师中存储 List<Key<Student>>
或 List<Ref<Student>>
。