哎呀我草 hibernate的那些get load 方法 太可怕了
写了一个根据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的方法太口怕了
------解决方案--------------------
这代码看着别扭,好像有错,你try catch一下估计会有异常
------解决方案--------------------hibernate很垃圾,但是也别自己脑子进水就怨Hibernate。
你下面的方法都能直接查询到user对象了,还返回个ID再查一次?
要么是下面的方法返回的ID就不对,要么是自己拼接HQL时候遇到编码或者类型转换了。
------解决方案--------------------密码不是纯数字就不走?这应该是你前段代码的问题,跟后台没有关系吧?
------解决方案--------------------
都取到user对象了,还要再查一次
String pass = hibernatetemplate.find("from User as u where u.name='" + name + "'").get(0).getPass();
------解决方案--------------------按照楼上说的try catch捕获一次吧。。估计是类型转换的问题。。检查下数据库跟配置对照上没?要说一个框架好不好首先得了解它。。而不是出了问题无法解决就说框架没用哦