App引擎数据存储和Java低级api:多对多的关系

时间:2011-07-21 18:41:34

标签: java google-app-engine google-cloud-datastore entity-relationship low-level-api

我只想知道如何使用数据存储区中的低级api在两个实体之间建立多对多的关系,我一直在寻找,但我找不到解释如何做这种关系的文档。我希望有人能帮帮忙。

但如果我有多对多的实体A和实体B,我怎样才能存储在数据存储区中。我的意思是,这是一个很好的解决方案,可以在数据存储中存储多对多的实际情况,或者什么是一个好的解决方案?这段代码还可以,还是错了?

Entity entityA = new Entity("TypeA");
entityA.setProperty("name", "nameUserA");

Entity entityB = new Entity("TypeA");
entityA.setProperty("name", "nameUserB");

ds.put(entityA);
ds.put(entityB);

Entity entityChild = new Entity("entityChild",entityAKey);
entityChild.setProperty("name","child");

 ds.put(entityChild);

Entity entityChild = new Entity("entityChild",entityBKey);
entityChild.setProperty("name","child");

 ds.put(entityChild);

1 个答案:

答案 0 :(得分:0)

AppEngine不提供多对多关系的任何功能。

您可以通过创建自己的实体来模拟它,包含两个字段:

class AtoBRelations {
  Key entityA 
  Key entityB
}

我常见的模式是为多对多关系设置一个额外的表,即使对于其他数据库也是如此

BTW,对于大多数情况来说,它不是最佳解决方案。最优解决方案取决于必须如何使用这种多对多关系,并且几乎没有不同的解决方案

例如,有第二种解决方案:您可以存储相关实体的列表,例如:

class EntityA {
   List<Key> entitiesB
}