JDO getObjectById возвращает ноль, почему?

Я только начал использовать JDO и хранилище данных Google

У меня есть класс File, который содержит код ниже для первичного ключа.

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

Когда я вызывал этот метод, используя значение ID/Name в хранилище данных, он выдавал ошибку - javax.jdo.JDOObjectNotFoundException: не удалось получить объект типа File с ключом File ("6298002603900928").
Но когда я использую значение ключа, которое в хранилище данных, он возвращает ожидаемый объект 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 / Имя в ключ, используя этот код

Key key = KeyFactory.stringToKey(fileId);

Но это также дало мне ошибку java.lang.IllegalArgumentException: Неверный ключ PB: нет элементов.

1 ответ

Решение

Я узнал, почему есть ошибка.

fileId, который я использовал - String. Это должно быть Лонг.

Другие вопросы по тегам