项目环境:j2ee + hibernate JPA, DB:sqlserver 2012
执行的sql文:select * from table1 where filed1 > '3' COLLATE SQL_EBCDIC037_CP1_CS_AS;
问题是上面的Sql文在sqlserver查询器里正常执行,检索到的数据都是filed1字段第一位大于3的数据,不包第一位是a~z字母的数据,而在hibernate里执行不但把第一位大于3的数据检索出来了,还把第一位是a~z字母的数据也检索出来了
问题补充COLLATE SQL_EBCDIC037_CP1_CS_AS是指按照SQL_EBCDIC037_CP1_CS_AS排序,也就是说字母a~z是小于0~9的
现在找到了一种解决方案:就是在查询变量设定的时候不使用query.setParameter,而是直接将变量值拼进查询sql文中就是正常的,可是这样就会有sql注入的问题
还有就是不明白为什么这样改就是OK的?请高手指教下!