【问题标题】:Play! Framework, created object is null even after passing correct value into method玩!框架,即使将正确的值传递给方法后,创建的对象也为空
【发布时间】:2014-02-12 22:27:04
【问题描述】:

当正确的参数被传递给 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;
}

在 User foundUser = User.findByUserName(connection.connectionUserName); 这条线上失败了

我要做的是从用户的数据库中获取用户的详细信息,该用户的用户名存储在 connection.ConnectionUserName 变量中,但 foundUser 变量为空,即使我可以在调试中看到正确的字符串正在传递给方法

这里是 User 类中的 findByUserName 方法

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

任何帮助都将不胜感激,我想我只需要一双不同的眼睛来查看这个并看到我遗漏的明显错误!

提前致谢!!

【问题讨论】:

  • 您是否验证了connection.connectionUserName 已填充?
  • 另外,你还用foundUser做什么?声明后我没有看到对它的任何引用
  • @StormeHawke connection.connectionUserName 填充了用户名,foundUser 在下面的行中引用,foundUser.jobTitle 我试图在其中获取 jobTitle 的值
  • 抱歉,我错过了那行。
  • @StormeHawke 有什么想法吗?

标签: java playframework playframework-2.0


【解决方案1】:

我认为在这种情况下你是唯一可以帮助你的人。

  • 首先通过adding lines to conf启用将语句记录到控制台

    db.default.logStatements=true
    logger.com.jolbox=DEBUG
    

    这样您就可以复制无效的 SQL 语句,然后尝试在您最喜欢的 DB gui 中执行它

  • 使用调试器在这个地方中断并检查解析的值,也许问题不在users' finder?

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

  • 最后,您正在寻找username 的连接,但想以connectionUserName 获得它,为什么?如果你真的有两个单独的字段,如果你想弄乱这样的事情,请确保它们始终具有相同的值。使用您的数据库 gui 并直接检查数据库是否存在。

【讨论】:

  • 感谢您告诉我有关 SQL 日志记录的信息,这对将来很有用。原来问题是一个累了的程序员,我传递给 findByUserName 方法的用户名以 .com 而不是 .co.uk 结尾,就像数据库中的用户名一样。我的愚蠢!您的建议帮助我到达那里,所以感谢您抽出时间来回答!
猜你喜欢
  • 1970-01-01
  • 2012-04-19
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 2021-09-09
  • 2020-11-03
相关资源
最近更新 更多