写了一个根据id 查询 pass的方法 
/**
*获取pass
*/
        public String selectpass(String name) {
String pass = hibernatetemplate.get(User.class, getId(name)).getPass();
System.out.println(pass);
return pass;
}
        //获取id
public int getId(String name) {
int id = (Integer) hibernatetemplate.find(
"select id from User user where name='" + name + "'").get(0);
return id;
}按说这个没啥问题吧。。然后诡异的问题出现了 
如果密码部分 不是纯数字的字符串的话 
死活不走 代码。。
下面那个不输出了。但是 如果是纯数字的字符串。。
则正常输入 ajax回调验证 真心奇怪 难道get方法拿到对象只能get纯数字的字符串吗 要真是这样的功能 我还是滚回去 用我的sql把 hibernate的方法太口怕了

解决方案 »

  1.   


    这代码看着别扭,好像有错,你try catch一下估计会有异常
      

  2.   

    hibernate很垃圾,但是也别自己脑子进水就怨Hibernate。你下面的方法都能直接查询到user对象了,还返回个ID再查一次?要么是下面的方法返回的ID就不对,要么是自己拼接HQL时候遇到编码或者类型转换了。
      

  3.   


    都取到user对象了,还要再查一次String pass = hibernatetemplate.find("from User as u where u.name='" + name + "'").get(0).getPass();
      

  4.   

    按照楼上说的try catch捕获一次吧。。估计是类型转换的问题。。检查下数据库跟配置对照上没?要说一个框架好不好首先得了解它。。而不是出了问题无法解决就说框架没用哦
      

  5.   

    原来是因为 我前端 使用jsp getAtt接收的数据 通过ajax 传到后台的时候 没有加' ' 于是传不过来 。。