我坚持使用id来设置持久化对象。我收到一个错误:
com.google.appengine.api.datastore.EntityNotFoundException: No entity was found matching the key: CNG("T78")
我将下面的对象持久存储到数据存储中:
Key cngKey = KeyFactory.createKey("CNG", jsonCNG.cNGID);
Entity cngEntity = new Entity("CNG", cngKey);
cngEntity.setProperty("cng_name", jsonCNG.cNGName);
cngEntity.setProperty("cng_type", jsonCNG.cNGType);
cngEntity.setProperty("cng_content", cng);
这里cng是一个json字符串。我用字符串设置了密钥:cNGID。我正在尝试使用相同的id来获取对象。
Key cngKey = KeyFactory.createKey("CNG", "T78")
并最终得到上述错误。
答案 0 :(得分:1)
您似乎没有将其保存到数据存储区。
Datastore.put(cngEntity);
答案 1 :(得分:1)
构造函数new Entity("CNG", cngKey)
正在使用kind和父键定义实体。然后,当您尝试检索它时,您不提供父密钥:KeyFactory.createKey("CNG", "T78")
。这不起作用 - 您必须在两个地方都提供父键。
注意 - 在定义实体组时使用定义实体父级,这在使用事务时非常重要。你可能不想要那个?
相反,您应该只使用new Entity(cngKey)
。