KeyFactory.createKey()这是在数据存储区中存储数据的正确方法

时间:2013-07-11 11:53:05

标签: java google-app-engine google-cloud-datastore

每个用户都可以有很多问题。问题只能有一个用户。是正确的

Key questionKey = KeyFactory.createKey("Questions", userId);
Entity questionEntity = new Entity("Question", questionKey);
questionEntity.setProperty("questionCategory", questionCategory);
...

1 个答案:

答案 0 :(得分:2)

给定的用法是错误的。对于这个问题,您使用kind和userid创建密钥。这意味着相应的实体属于Kind="Questions"id=userid且没有父母。这是错误的,一旦您为用户提出多个问题,您将开始收到错误,因为他们都将拥有相同的密钥。

理想情况下,您需要的是,对于问题实体,将其类型声明为问题,将父类声明为用户,如下所示:

1,如果使用手动生成的问题ID或名称,则:

Key questionKey = KeyFactory.createKey(userkey, "Questions", questionidorname);

2,如果使用app引擎的自动生成ID,则无需创建密钥,而是将实体创建为:

Entity questionEntity = new Entity("Questions",
      userkey)

此处userkey是用户实体的密钥