this.getHibernateTemplate().bulkUpdate("DELETE FROM Manage bean WHERE bean.id in (?)",new Short(str));}
这里的bean.id 是 short类型的 这样写或者直接写str 不加new Short 都会报类型转换错误
delete from manage bean where bean.id in("+str+") 这样就不会报错误了 ,但是我不想这么写
执行这句 "delete from manage bean where bean.id in(?)",str的时候 会报str 转换到short的异常 我该怎么解决这个异常啊 或者还有什么更好的方法? 万分感谢
这里的bean.id 是 short类型的 这样写或者直接写str 不加new Short 都会报类型转换错误
delete from manage bean where bean.id in("+str+") 这样就不会报错误了 ,但是我不想这么写
执行这句 "delete from manage bean where bean.id in(?)",str的时候 会报str 转换到short的异常 我该怎么解决这个异常啊 或者还有什么更好的方法? 万分感谢
传递1的时候
hibernateTemplate.bulkUpdate(queryString, "1");
传递1,2,3的时候
hibernateTemplate.bulkUpdate(queryString, "1,2,3")
你传一个字符进去当然会出错了把str里的东西拆开装到集合
或者把值一个一个放进去
delete from manage bean where bean.id in("+str+")这样没错
但是能得到你想要的数据吗??
http://topic.csdn.net/u/20090807/09/b5a395c2-46ea-4593-a13f-fe8d193c5a21.html
可能懒是一方面 还有一方面 我感觉in关键字的语句 只执行一次 就可以了吧
如果循环的话 效率也会不好的吧还有12楼的链接地址 非常感谢 但是他解决的方法 也是 循环做的啊有in 为什么不用那? 方便的方法为什么不用那?
in 接受的是多个值 或一个集合 我完全赞成 select * from table where id in('1,2,3,4') 这样写是没错的啊
我总感觉 hibernate 会考虑到这一方面 毕竟 in 很常用吗 应该会有解决的办法吧 (不是指for)
如果id是string的那没错,如果是数值型,那就会出错
String aa = "1,2,3,4";
select * from table where id in("+aa+")
id数值型,没错
id字符型,报错这些错误都是存在了隐士转换在数据库执行的时候to_char()或者to_number()了
这个是关于HQL的IN问题你的new Short(str),想必你的str="1,2,3"是这样形式的,
那转换的时候他当然会出错误,一个字符行转换到整形,如果str="1"你在转换,是否还出错呢;解决方法:把str拆开组成一个short数组传进去以上是我仔细看后总结了一下,有错的地方,大家讨论指出
错误是一种进步嘛
#15楼 <!--
select * from table where id in('1,2,3,4')
如果是数值型,那就会出错
--> 你的下面这句话 也许你是指 hql 我不晓得他hql 到 sql是怎么变化的 如果是sql的话 我用了好几年了 他从来就没报过错 in 做运算的时候 本来就会吧括号里的内容 当做集合来做 他还有什么理由报错的!!!我喜欢能有更理想的解决方法 就像select * from table where id in("+aa+") 这样一样 不要类型转换 不是用户拼凑的sql语句 select * from table where id in(?),aa 就向这样
这句如果是SQL,ID是数值型,同样会报错,
他不会把'1,2,3,4'当成集合,他只会把他当成一个字符,然后to_number
我的数据库是oracle10g哥们,我不知道你如何理解in
但我的理解就是in里面就是一个集合,
你要给他一个他能识别的集合
愚见
不是非常情况,一般不用,在oracle里面
regexp_like也可以当in用,效率好很多
这个就能很好支持你的那个情况
不过HQL不支持