数据库中只有一个表app_user,有三个字段:id, username, password。
sql是:select id, password from app_user where username=?;网友给了一段代码:final String username = getPrincipalNameTransformer().transform(credentials.getUsername());
final List<Map<String, Object>> rs = getJdbcTemplate().queryForObject(this.sql, username);
if(rs.size()<1) 
    return false;
final String userid = (String)rs.get(0).get("id");
final String password = (String)rs.get(0).get("password");
return true;
sql语句是在别处定义的;
第一句是没有问题的,因为另外一个非常类似的文件中也是这么写的;
编译没问题,运行就出错。
唯一的可能是数据库查询有错,因为只有这个地方和另外一个正确的文件有差别。
请问这么查询数据库,得到userid和password对吗?

解决方案 »

  1.   

    写的查询语句错了吧!!!
    select id, password from 实体类名 where username=?;
    这里不应该写表名呀??????试下咯
      

  2.   


    我还不知道实体类名是什么,怎么写。
    甚至我都不能完全确定这个sql查询与这段代码对应,因为我可以改动的就这一个地方,所以就认为是它了。原来的数据库只有两个表,username, password,下面是对应的代码:final String username = getPrincipalNameTransformer().transform(credentials.getUsername());
    final String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
    return true;原来的sql是:select password from app_user where username=?这段代码是系统原有的,不会错,上面帖子里的代码是别人写的,麻烦你再看看是什么问题。
      

  3.   

    这个sql是在一个xml文件中定义的,是别人的例子,试过了,这样写没有问题的。
      

  4.   

    我再总结一下:以前表中有两个字段,username和password
    sql表达式是:select password from app_user where username=?;
    username已知,
    通过String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
    就可以得到password。现在表中增加了一个字段id
    username已知,
    怎么得到id和password?