JDOObjectNotFoundException при попытке получить дочерний объект в GAE - PullRequest
4 голосов
/ 21 октября 2011

Я разработал модель данных, в которой есть объекты родителей и детей (один ко многим). Сначала я делал всю работу вручную и сохранял идентификаторы родителей в дочерних объектах, чтобы сохранить связь. Тогда я решил использовать отношения с документацией движка приложения. Теперь у меня есть родитель с ID 21 и ребенок с ID 1 (я предполагаю, что ID равен 1, потому что этот ребенок является единственным и первым потомком этого родителя). Сейчас я пытаюсь получить ключ как: child.getKey ()

И с той же самой строкой я пытаюсь получить объект с:

Child child = pm.getObjectById (Child.class, key);

Как-то я получаю эту ошибку: ВНИМАНИЕ: /admin.jsp javax.jdo.JDOObjectNotFoundException: Не удалось получить сущность вида Child с ключом Child ("Parent (21) / Child (1)")

Я знаю, что этот ребенок существует у этого родителя. Может быть, кто-то может мне помочь? Я исследовал это, и ничего не обнаружилось ...

1 Ответ

4 голосов
/ 22 октября 2011

Я нашел решение после нескольких попыток любой возможности. Есть 2 способа, как решить эту проблему. Прежде всего, если вы хотите получить дочерний объект с ключом, убедитесь, что ключ не является строкой. Это должен быть ключ (com.google.appengine.api.datastore.Key). Вы можете получить этот ключ двумя разными способами:

Key key = new KeyFactory
    .Builder(Parent.class.getSimpleName(), ParentID)
    .addChild(Child.class.getSimpleName(), ChildID).getKey();

или

Key key = KeyFactory.stringToKey(keyString); //you can obtain keyString with KeyFactory.keyToString(ChildObject.getKey());

Тогда вы можете легко использовать:

Child child = pm.getObjectById(Child.class, key);
...