JDO getObjectById返回null,为什么?

时间:2013-09-25 03:48:55

标签: java google-app-engine jdo persistence-manager

我刚开始使用JDO和Google数据存储器

我有File类,其中包含下面的主键代码。

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

当我调用此方法时,使用数据存储区中的ID / Name值,它给了我错误 - javax.jdo.JDOObjectNotFoundException:无法使用密钥文件(“6298002603900928”)检索种类文件的实体。
但是当我在数据存储区中使用Key值时,它会返回预期的File对象

ID /名称值为6298002603900928
关键值为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();
}

我该如何解决这个问题?

我尝试使用此代码将ID / Name转换为Key

Key key = KeyFactory.stringToKey(fileId);

但它也给了我错误 java.lang.IllegalArgumentException:无效的密钥PB:没有元素。

1 个答案:

答案 0 :(得分:0)

我发现了为什么会有错误。

我使用的fileId是String。假设是Long。