2014-01-08 88 views
2

我仍然无法使用GAE的keys/id。我不断收到错误信息:找不到与该键匹配的实体:键(Medewerker(5201690726760448))。这些实体存在于数据存储中,我多次检查过。通过ID检索用户对象

我想只是简单地得到一个用户对象与一个特定的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

here你可以阅读的get方法:

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

使用

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

find方法不抛出NotFoundException当该键不存在,但null

+0

Mateusz感谢您的回答,我认为它的作品,但它留给我以下问题。当我尝试添加创建的对象时,我得到一个异常“leerling不是受支持的属性类型”,但我试图添加对象: 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