有一个查询
String str="From Table where col1=? and col2=? and col3=col4";使用getHibernateTemplate().find(str,new Object[]{"aaa","bbb","ccc"});
始终查询不出结果。但打印出来的sql语句却可以查询。将字符串改为
String str="From Table where col1='"+aaa+"' and col2='"+bbb+"' and col3=col4";
getHibernateTemplate().find(str);却可以正常读出。这是为什么呢?
String str="From Table where col1=? and col2=? and col3=col4";使用getHibernateTemplate().find(str,new Object[]{"aaa","bbb","ccc"});
始终查询不出结果。但打印出来的sql语句却可以查询。将字符串改为
String str="From Table where col1='"+aaa+"' and col2='"+bbb+"' and col3=col4";
getHibernateTemplate().find(str);却可以正常读出。这是为什么呢?
解决方案 »
- Myeclipse中配置tomcat问题
- tomcat首页的登陆窗口是如何实现的
- 关于jspsmartupload+文本框提交servlet
- Spring找不到这个包common-annotations.jar
- 关于 java中的 无限级分类 javabean 在hibernate中的映射配置
- 请问axis下开发的webservice解析xml格式串的String参数的问题?
- 运行一段时间后sql 占用cpu90%左右?
- 大家都来看看哦!!!
- weblogic7在HP服务器创建连接池失败,在其它机子都没问题,怎么回事啊?请各位高人帮帮手
- 一个ejb问题,比较困惑,请高手指点!
- POI读取excel返回空?
- 请问这个异常是什么引起的?一直抛这个异常无法正常运行项目
使用getHibernateTemplate().find(str,new Object[]{"aaa","bbb","ccc"});
想问一下,你本来只有两个问号,但是你传3个参数?
那个CCC的值应该给哪个?
为什么一定要左右做呢?
如果要传送参数,直接写个方法
String sql = "";
然后etHibernateTemplate().find(sql+参数1,参数2)
楼主可以按下面这样修改试试:
String str="From Table where col1='?' and col2='?' and col3='?'";使用getHibernateTemplate().find(str,new Object[]{"aaa","bbb","ccc"});可能原因是你查询的字段是字符串字段,所以在HQL中要加单引号,如果是hibernate的
query.setString(0,str);
这种方式的话,他是会自己加上单引号的你println的sql语句可以查询与这个没什么关系,因为在控制台中输入sql语句,控制台比较灵活,可以自己识别一下,比如 int型的id, 也可以 where id='1001'。
始终查询不出结果。但打印出来的sql语句却可以查询。肯定查不出来呀,你给了参数值,Hibernate怎么知道aaa对应的是哪个?
不过我个人喜欢下面的做法:
String str="From Table where col1=:col1 and col2=:col2 and col3=col3";
String[] params = {"col1","col2","col3"};
Object[] value = {"aaa","bbb","ccc"};
return super.getHibernateTemplate().findByNamedParam(str, param, value);
String str="From Table where col1=:col1 and col2=:col2 and col3=:col3";
getHibernateTemplate().find(str,new String[]{"col1","col2"},new Object[]{"aaa","bbb"}),这样铁定没问题
String str="From Table where col1=:col1 and col2=:col2 and col3=col4";