今天我在使用Hibernate 的SQL预编译之后注入参数的形式写了一条模糊查询语句。刚开始我是这么写的

  

  然后当我执行这条SQL语句后

  

  可以看到结果是无效字符SQL异常。

  然后我查了下原因,发现以上SQL在预编译时缺少 ' '  才导致SQL异常

  

  下面我改成这种方式

  

  结果输出如下

  

  这问题原因是什么呢?

  

   原因:HQL语句中''中的?没有解析成占位符,确解析成字符串了。

   所以按照要求要去掉' ',但去掉' '就会报上面一项错误。

   在我咨询了同事自后,我的问题得到了解决。解决的方法就是使用SQL 中的 || 字符串连接符。

  

  这种方式就避免了上面两种方式带来的异常问题 ,而且还是用了SQL预编译,防范了SQL注入攻击。

  以上是我工作中一个小问题,特此记录,以备以后自己查阅

  

  

Hibernate 模糊查询 ' %?% ' SQL执行异常的更多相关文章

  1. hibernate模糊查询

    hibernate模糊查询-Restrictions.ilike & Expression.like Criteria criteria = session.createCriteria(Ta ...

  2. 查询SQL执行情况

    /* 查询SQL执行情况 包含逻辑读取信息,执行信息等情况*/ SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total ...

  3. Oracle数据库,忽略大小写Like模糊查询(SQL Server,MySql原理相同)

    背景 在使用Oracle或者其它数据库时,使用like 关键字进行模糊查询是大家经常使用的功能,在纯中文环境中使用非常好用,还有一些通配符可以使用,但是在纯英文环境中,会出现大小需要精确匹配的问题,主 ...

  4. asp下实现多条件模糊查询SQL语句

    常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ...

  5. 实现多条件模糊查询SQL语句

    很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名.性别.电话号...作为数据库中的字段名. 通常写一个简单的模糊查询的SQL语句格式可以如下例: sql="selec ...

  6. sql 根据日期模糊查询&SQL Server dateTime类型 模糊查询

    曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm: ...

  7. mybatis模糊查询sql

    今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询,所以不是迷糊查询. 后来经过搜索 ...

  8. Mysql资料 查询SQL执行顺序

    目录 一.Mysql数据库查询Sql的执行顺序是什么? 二.具体顺序 一.Mysql数据库查询Sql的执行顺序是什么? (9)SELECT (10) DISTINCT column, (6)AGG_F ...

  9. sql运算符优先级及逻辑处理顺序--查询sql执行顺序

    sql逻辑处理顺序 --开启和关闭查询 --SET STATISTICS TIME ON---------------------------------------------请先来看看SET ST ...

随机推荐

  1. win7 x64 dtrace

    1.下载WINDOW DTRACE 工具 https://github.com/prash-wghats/DTrace-win32 2.系统参数修改 bcdedit/set testsigning o ...

  2. http://blog.csdn.net/zh521zh/article/details/52687922

    http://blog.csdn.net/zh521zh/article/details/52687922

  3. 跟开涛学SpringMVC(4.1):Controller接口控制器详解(1)

    http://www.importnew.com/19397.html http://blog.csdn.net/u014607184/article/details/52074530 https:/ ...

  4. SQL-基础学习3--通配符:LIKE,%,(_); 拼接:+,||,concat;

    第六课 用通配符进行过滤 6.1  LIKE操作符 通配符本身实际上是SQL的WHERE子句中有特殊含义的字符,SQL支持几种通配符.为在搜索子句中使用通配符,必须使用LIKE操作符.LIKE指示DB ...

  5. android toolbar 假标题居中

    <android.support.v7.widget.Toolbar android:id="@+id/toolbar_top" android:layout_height= ...

  6. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 远程Event Receivers App级别生命周期

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers  远程Event Receivers App级别生命周期 ...

  7. 【转载】面向切面编程(AOP)学习

    看到这篇文章,学习一下:http://www.ciaoshen.com/2016/10/28/aop/ 想理清一下从“动态代理”,到 “注释”,到“面向切面编程”这么一个技术演进的脉络. 只想讲清楚两 ...

  8. Solaris服务管理

    远程登录协议 telnet \ssh 等.当然我们可以查看谁登录过我的系统,以及可以利用ftp记录日志. 一.SMF: 服务管理工具 优点:自动恢复意外终止的服务,支持服务的依赖关系,一个服务可以有多 ...

  9. 如何成为一个Linux内核开发者

    你想知道如何成为一个Linux内核开发者么?或者你的老板告诉你,“去为这个设备写一个Linux驱动.“这篇文档的目的,就是通过描述你需要 经历的过程和提示你如何和社区一起工作,来教给你为达到这些目的所 ...

  10. centos7下memcached的安装配置

    memcached 依赖 libevent-devel 首先安装libevent-devel yum -y install libevent-devel 安装完毕! 继续安装memcached yum ...