2013-09-25 39 views
0

我剛開始使用JDO和Google數據存儲

我有File類,其中包含以下主鍵的代碼。JDO getObjectById返回null,爲什麼?

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Key key; 

當我把這種方法,在數據存儲使用ID /名稱值,它給了我錯誤 - javax.jdo.JDOObjectNotFoundException:無法檢索與密鑰文件(「6298002603900928」)文件類型實體。
但是當我使用它在數據存儲,它返回預期File對象

ID /名稱值6298002603900928
Key值是agxvcmdhbml6ZS1mcHZyEQsSBEZpbGUYgICAgICAmAsM

File file = null; 
// get data from Google datastore 
PersistenceManager pm = PMF.get().getPersistenceManager(); 
try { 
    file = pm.getObjectById(File.class, fileId); 
} catch (JDOObjectNotFoundException e) { 
    e.printStackTrace(); 
} 

我該如何解決這個問題的關鍵價值?

我試圖通過使用此代碼

Key key = KeyFactory.stringToKey(fileId); 

到ID /名稱轉換爲關鍵,但它也給了我錯誤java.lang.IllegalArgumentException異常:無效的密鑰PB:沒有元素。

回答

0

我發現了爲什麼有錯誤。

我使用的fileId是String。它被認爲是長。