日期:2014-05-19  浏览次数:20562 次

关于myeclipse的ssh2框架向数据库取数据问题
我用myeclipse自动生成ssh2框架,以下是自动生成的代码
public Users findById(java.lang.String id) {
log.debug("getting Users instance with id: " + id);
try {
Users instance = (Users) getHibernateTemplate().get(
"com.dao.Users", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}

但是这个查询语句并没有取到数据(没有抛出异常,只是没有数据回来)。
然后我自己写了一条查询语句
public List findById(String id){
log.debug("find by id");
try{
List result=getHibernateTemplate().find("from Users as model where model.id="+id);
return result;
}catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}

这个是可以取数据回来,我想问这个是为什么的呢?
自动生成的代码都不能取数据回来(没有抛出异常,只是list的size为0,或者Users对象为空)
------最佳解决方案--------------------
Load才会抛出异常。

拼接的能查询到说明肯定写错了。因为它不应该查到,该拼接'的地方没有'

基本可以确定写的id是数字,被强转了才查到,所以去检查users的id类型是不是char,有没有空格。



------其他解决方案--------------------
应该是你的Users类的ID是Integer型的
------其他解决方案--------------------
引用:
Load才会抛出异常。

拼接的能查询到说明肯定写错了。因为它不应该查到,该拼接'的地方没有'

基本可以确定写的id是数字,被强转了才查到,所以去检查users的id类型是不是char,有没有空格。

那个是自动生成的~不过我还真没有找找看~
------其他解决方案--------------------
引用:
应该是你的Users类的ID是Integer型的

不是。
更扯淡的问题是自动生成的代码都没有效果
------其他解决方案--------------------
结贴了。终于知道原因。原来是数据类型的问题。
在数据库中id的类型是CHAR(50),于是被自己坑了一把。所以参数需要补空格。
真坑爹。网上查了也没有什么好方法。一:改数据库。二:自动补全空格