2

Я все еще не могу работать с ключами/идентификаторами GAE. Я продолжаю получать ошибку: ни один объект не был найден, соответствуя ключу: Key (Medewerker (5201690726760448)). Сущности существуют в хранилище данных, я проверил это несколько раз.Извлечение объекта пользователя по ID

Я пытаюсь просто получить объект пользователя с определенным ID. В моем сервлете у меня есть следующий код:

Long userId = Long.parseLong(req.getParameter("user")); 
User user = userDao.getUser(userId); 

Приведенный выше код вызывает ошибку. В userDaoOfyImpl.java У меня есть следующий метод «GetUser»:

public Gebruiker getGebruiker(Long id) { 
    Gebruiker result = null; 
    Gebruiker leerling = (Gebruiker) ofy.get(Leerling.class, id); 
    Gebruiker medewerker = (Gebruiker) ofy.get(Medewerker.class, id); 
    Gebruiker stagebedrijf = (Gebruiker)ofy.get(StageBedrijf.class, id); 

    //Gebruiker instantie returnen 
    if(leerling != null) { 
     result = leerling; 
    } else if(medewerker != null) { 
     result = medewerker; 
    } else if(stagebedrijf != null) { 
     result = stagebedrijf; 
    } 

    return result; 
} 

Переменные нидерландский, но я думаю, что вы, ребята, знаете эту идею. Вышеупомянутый метод выполняет поиск в разных классах, ища пользователя, который соответствует идентификатору, и затем возвращает его.

Проблема в том, что я получаю ошибку, показанную выше, и я действительно расстраиваюсь, что я делаю неправильно? Это метод или способ использования идентификаторов или ...?

Заранее благодарен!

ответ

1

here вы можете прочитать для метода get:

Throws: NotFoundException - if the key does not exist in the datastore

использования

Gebruiker leerling = (Gebruiker) ofy.find(Leerling.class, id); 

метод находки не бросает NotFoundException, когда ключ не существует, но null.

+0

Mateusz благодарит вас за ответ, я думаю, что это работает, но это оставляет мне следующую проблему. Я получаю исключение «leerling - это не поддерживаемый тип свойства», когда я пытаюсь добавить объект-объект в objectify: CompetentieLijst cL = new CompetentieLijst (leerling, today, false); ofy.put (cL); – JasonK

+0

проверьте [this] (http://stackoverflow.com/questions/5428571/objectify-appengine-embedded-class-not-a-supported-property-type). Если это не поможет, пожалуйста, расскажите подробнее. – Mateusz

Смежные вопросы