2013-10-07 44 views
0

我被坚持通过其编号创建持久对象。我得到一个错误:Google App Engine通过密钥获取对象

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") 

并最终得到上述错误。

回答

1

构造new Entity("CNG", cngKey)的定义与种类和父键的实体。然后当您尝试检索它时,您不提供父键:KeyFactory.createKey("CNG", "T78")。这不起作用 - 你必须在两个地方都提供父键。

注 - 在定义实体组时使用定义实体父项,这在使用事务处理时非常重要。你可能不想要那个?您可以使用new Entity(cngKey)

1

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

Datastore.put(cngEntity); 
+0

其实,我把它保存到数据源。抱歉代码丢失。 –

相关问题