我在數據存儲中存在實體。我可以通過屬性查詢如發現管理控制檯:Appengine數據存儲無法通過未編碼密鑰找到現有實體
SELECT * FROM UserEntry where email = '[email protected]'
並且還通過編碼的鑰匙串進行查詢,如:
SELECT * FROM UserEntry where __key__ = KEY('cy1hcHByIAsSCVVzZXJFbnRyeM')
然而,當我查詢的未編碼的關鍵實體,它不是發現:
SELECT * where __key__ = KEY('UserEntry','[email protected]')
從以前的查詢中,我可以驗證該鍵是否正確,並且相同的查詢適用於相同類型的其他實體。
我遇到相同的行爲,當我嘗試通過JDO API來訪問實體:
pm.getObjectById(UserEntry.class, "[email protected]");
該代碼產生以下異常:
javax.jdo.JDOObjectNotFoundException: Could not retrieve entity of kind UserEntry with key UserEntry("[email protected]")
這是怎麼回事?我怎樣才能解決這個問題,並在將來避免它?
如果您發佈* actual *值而不是'cy1hcHByIAsSCVVzZXJFbnRyeM'和「[email protected]」,這將有所幫助。然後我可以很容易地檢查這些是否相同。你給的不是; 'cy ... eM'甚至不是一個有效的密鑰。 –
實際值是我們用戶的電子郵件地址,這是一種私人信息..但我可以向您保證編碼密鑰的名稱正確解碼給定的電子郵件。 –
所以你說只有一個關鍵字和一個關鍵字,使用KEY進行查詢('sdfasdfasdfasfsdfasdfsd'),但使用KEY('classname','keyname')的相同查詢失敗?始終如一?你不能用其他鍵重現?那麼請私下向我發送詳細信息。 –