Google App Engine实体的多个父级

时间:2016-05-21 17:01:35

标签: java google-app-engine objectify

我正在App Engine中设置一个大学生数据库。我需要能够列出注册课程的学生。我有学生和班级作为实体。问题是学生可以注册多个班级,因此我需要能够将多个班级实体作为学生的父母。这可能吗?文档不讨论多个父母。

这个question表示Python支持它,但我可以为Java找到任何东西。

如果不是,我必须手动将学生ID存储为Class?

中的成员数据

2 个答案:

答案 0 :(得分:0)

对于交易,我建议引入一个新的合成父级,它将是Class和Student实体组的父级。如果在你的情况下这是可能的。或者创建一个包含多个id关系的第三个实体,例如:

class StudentClasses {
   Long studentId
   Long[] classesIds 
} 

因此,您可以在一次更新中更新 student->类关系。

还要避免创建根超级别,否则你将失去性能(最有可能获得很多锁)。并仔细阅读GAE中的亲子概念,在您的情况下,您可能并不真正需要它。

答案 1 :(得分:0)

我认为在您的情况下,您不需要将Class实体作为学生实体的父级,因为学生可以在没有课程的情况下存在。所以我相信,你只想在班级和学生之间建立一种关系。如果是这样,那么你可以建立一个学生可以有很多课程的关系。你也可以查询找到属于任何给定班级的所有学生。您可以访问文档以获取有关关系objectify

的更多信息

在您的学生实体模型中添加以下行:

List<Ref<Class>> classes = new ArrayList<>();

现在,在创建学生时,您需要与已创建的课程建立关系,或者您也可以为已创建的学生分配新课程(取决于您的要求)   this question may help