0

我坚持通过其 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")

并最终得到上述错误。

4

2 回答 2

1

您似乎没有将其保存到数据存储区。

Datastore.put(cngEntity);
于 2013-10-07T19:46:53.803 回答
1

构造函数使用 kind 和parent keynew Entity("CNG", cngKey)定义实体。然后,当您尝试检索它时,您不提供 parent key: 。这不起作用 - 您必须在两个地方都提供父密钥。KeyFactory.createKey("CNG", "T78")

注意 - 定义实体组时使用定义实体父级,这在使用事务时又很重要。你可能不想要那个?

相反,您应该只使用new Entity(cngKey).

于 2013-10-07T19:52:03.543 回答