按ID检索用户对象

时间:2014-01-08 16:31:05

标签: java google-app-engine servlets key google-cloud-datastore

我仍然无法使用GAE的键/ ID。我一直收到错误:没有找到与密钥匹配的实体:Key(Medewerker(5201690726760448))。实体存在于数据存储区中,我多次检查过。

我只想简单地获取具有特定ID的用户对象。在我的servlet中,我有以下代码:

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;
}

变量是荷兰语,但我想你们都知道这个想法。上面的方法在不同的类中搜索,寻找与ID匹配的用户,然后返回它。

问题是我得到上面显示的错误,我真的很沮丧,我做错了什么?是我使用ID的方法或方式还是......?

提前致谢!

1 个答案:

答案 0 :(得分:1)

here您可以阅读get方法:

  

抛出:NotFoundException - 如果数据存储区中不存在该键

使用

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

当密钥不存在而NotFoundException时,find方法不会抛出null