我在数据存储中有现有实体。我可以通过属性查询找到它的管理控制台,例如:
SELECT * FROM UserEntry where email = 'user@mail.com'
并通过编码的密钥字符串查询它,例如:
SELECT * FROM UserEntry where __key__ = KEY('cy1hcHByIAsSCVVzZXJFbnRyeM')
但是,当我通过未编码的键查询实体时,找不到它:
SELECT * where __key__ = KEY('UserEntry','user@mail.com')
从以前的查询中,我可以验证密钥是否正确,并且相同的查询适用于相同类型的其他实体。
当我尝试通过 JDO API 访问实体时,我遇到了同样的行为:
pm.getObjectById(UserEntry.class, "user@mail.com");
此代码导致以下异常:
javax.jdo.JDOObjectNotFoundException: Could not retrieve entity of kind UserEntry with key UserEntry("user@mail.com")
这怎么发生的?我该如何解决这个问题并在将来避免它?