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. Это должно быть Лонг.