qq_33468377 2016-06-02 08:15 采纳率: 0%
浏览 1757

hibernate JPA执行sql文中的where条件里使用COLLATE不起作用

项目环境: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的?请高手指教下!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 chaquopy python 安卓
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 有没有帮写代码做实验仿真的
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥30 vmware exsi重置后登不上
    • ¥15 易盾点选的cb参数怎么解啊
    • ¥15 MATLAB运行显示错误,如何解决?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容
    • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题