【问题标题】:Retrieving user object by ID按 ID 检索用户对象
【发布时间】:2014-01-26 21:13:54
【问题描述】:

我仍然无法使用 GAE 的密钥/ID。我不断收到错误消息:找不到与密钥匹配的实体:密钥(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的方法还是方式还是……?

提前致谢!

【问题讨论】:

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


    【解决方案1】:

    here 你可以阅读get 方法:

    抛出:NotFoundException - 如果数据存储中不存在密钥

    使用

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

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

    【讨论】:

    • Mateusz 感谢您的回答,我认为它有效,但它给我留下了以下问题。当我尝试在 objectify 中添加创建的对象时,出现异常“leerling 不是受支持的属性类型”: CompetentieLijst cL = new CompetentieLijst(leerling, today, false); ofy.put(cL);
    • 检查this。如果这没有帮助,请提供更多详细信息。
    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多