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

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

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

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

最佳答案

给定的用法是错误的。对于这个问题,您正在使用 kind 和 userid 创建 key 。这意味着相应的实体是 Kind="Questions"id=userid 并且没有父级。这是错误的,一旦您向某个用户提出超过 1 个问题,您就会开始收到错误,因为它们都具有相同的 key 。

理想情况下,对于问题实体,将其类型声明为问题,并将其父级声明为用户,如下所示:

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

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

2,如果使用app引擎自动生成id,则无需创建 key ,而是创建实体:

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

这里userkey是用户实体的 key

关于java - KeyFactory.createKey() 这是在数据存储中存储数据的正确方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592684/

相关文章:

java - 如何处理 org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs() 的结果

java - EJB事务不回滚

java - App Crashing with android material Chip Group with material 1.3.0

node.js - 错误: Cannot find module '/workspace/server.js' upon node js deploy on google app engine

python - 在 Google App Engine 上运行的 Python 中从 Facebook 中提取关系状态

google-app-engine - 建立实体组,同时保持对长 ID 的访问

java - 我应该使用 new BASE64Encoder() 还是 Base64.getEncoder() 在 java 中对图像进行编码?

google-app-engine - GAE 数据存储 (Golang) : Filter Query When Adding New DB Field

java - 无法使用相同的 ID 在数据库中重新创建 Google 数据存储 key

python-2.7 - 如何在 AppEngine for Python 中导入 BigQuery