玩!框架,即使将正确的值传递给方法后,创建的对象也为null

时间:2014-02-12 22:27:05

标签: java playframework playframework-2.0

我无法解决为什么当将正确的参数传递给findByUserName方法时,我的foundUser对象返回为null

这是方法的名称

public static ObjectNode getAllConnections(String userName){

    List<Connections> connectionsUsernames = find.where().eq("username", userName).findList();

    Iterator<Connections> connectionsIterator = connectionsUsernames.iterator();

    ObjectNode response = Json.newObject();
    ObjectNode responseItem = Json.newObject();

    while (connectionsIterator.hasNext()){
        Connections connection = connectionsIterator.next();

        User foundUser = User.findByUserName(connection.connectionUserName);
        responseItem.put("jobtitle", foundUser.jobTitle);

        responseItem.put("connectionid", connection.connectionId.toString());
        responseItem.put("connectionusername", connection.connectionUserName);
        responseItem.put("connectiondate", connection.connectionDate);

        response.put(connection.connectionUserName, responseItem);

    }
    return response;
}

用户找不到UserUser = User.findByUserName(connection.connectionUserName);

我想要做的是从用户数据库中获取userName存储在connection.ConnectionUserName变量中的详细信息,但是,即使我在调试中看到正在传递正确的String时,foundUser变量也为null方法

以下是User类

中的findByUserName方法
public static User findByUserName(String userName) {
    return find.where().eq("username", userName).findUnique();
}

任何帮助都会受到赞赏,我想我只需要一套不同的眼睛就可以看到这一点并看到一个我错过的明显错误!

提前致谢!!

1 个答案:

答案 0 :(得分:0)

我认为你是唯一可以帮助你的人。

  • 首先通过adding lines to conf

    启用语句记录到控制台
    db.default.logStatements=true
    logger.com.jolbox=DEBUG
    

    所以你可以复制无效的SQL语句,然后尝试在你最喜欢的数据库gui中执行它

  • 使用调试程序在此处中断并检查已解析的值,可能问题不在users' finder中?

  • 顺便说一句,您可以使用for循环进行迭代,这将是更简单的代码。

  • 最后,您正在查看username之间的联系,但希望将其作为connectionUserName来获取原因?如果您确实有两个单独的字段,请确保它们总是具有相同的值,如果您想要混淆这样的话。使用您的数据库gui并直接在数据库中检查它们是否存在。