Hibernate使用createSqlQuery进行模糊查询时找不到数据

1. 首先明确一点,使用createSqlQuery如下两种方式的占位符都可以使用,这个在官方的文档可以查到。

注意使用模糊查询时,赋值两边不可以添加单引号。

Query query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like ?").addEntity(Cat.class);
List pusList = query.setString(0, "Pus%").list();

query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like :name").addEntity(Cat.class);
List pusList = query.setString("name", "Pus%").list();

现在碰到问题是使用模糊查询时,一直查询不到结果,全部为空。

解决方案:

在hibernate的配置参数中添加查询翻译器配置:

 <!-- 查询翻译器 -->
 <prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
时间: 2024-10-07 16:29:00

Hibernate使用createSqlQuery进行模糊查询时找不到数据的相关文章

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam

EF一对多的表,模糊查询2个表的数据!

如用户表和电话表,要求搜索时可以模糊查询姓名和号码.都可以找到包含该字符的所有用户. /// <summary> /// 模糊查询姓名和电话号码,并按姓名排序返回 /// </summary> /// <param name="search">要搜索的字符</param> /// <returns></returns> public IQueryable<UserInfo> Search(string

MyBatis做动态模糊查询时,like后面要不要加单引号??

做项目遇到了个奇怪的问题,项目里面要对商品.账户.进行分别的多条件查询,于是我就采用动态多条件分页查询,起初在做账户部分的时候Mybatis是这样写的 <!-- 动态多条件分页查询 --> <select id="searchPageUseDyc" parameterType="page" resultMap="accountResultMap"> select acc_id,acc_login,acc_name,acc_

Oracle 数据库中在使用中文模糊查询时输入中文查询不到结果的解决方法

添加环境变量 变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

模糊查询时用到prepareStatement在SQL语句里的问号怎么写

原文地址:https://www.cnblogs.com/liuhuaabcp/p/9426414.html

Oracle 特殊字符模糊查询的方法

最近在写DAO层的时候,遇到一个问题,就是使用like进行模糊查询时,输入下划线,无法精确查到数据,而是返回所有的数据. 这让我很好奇,百度之后才发现,原来是因为有些特殊字符需要进行转义才可以进行查询. 首先理解一下什么是特殊字符. 在ascii码表中,特殊字符的范围如下.即从32~47 58~64 91~96 123~126. 模糊查询时,有两种方法可以进行转换. 1. 使用REGEXP_LIKE方法,这是个使用正则表达式来查询的方法,因此有此字符需要进行转义才能查询,如$ *等,转义符为反斜

arcengine模糊查询不起作用

在使用arcengine进行模糊查询时,模糊查询的功能并不能按照自己的想法实现,这个原因可能跟你使用的数据库的类别有关.在使用个人地理数据库(access)数据库时候模糊匹配不能使用%,而是使用*,具体的代码示例如下: IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass as IFeatureClass; IQueryFilt

ajax交互servlet返回数据和jdbc模糊查询-中文-已经设置了UTF-8和解决了乱码

1.编码是将字符按一定翻译方式转换成字节存储在内存或外存中,解码是按照一定翻译方式将存储中的字节转换成字符. 2.ASCII是单字节,最高位总为0,相当于只占用了一个字节的7位,2^7=128个字符,相当于键盘上的128个键,有大小写因为字母,有*,%¥#@!+....等这些可显示字符,也有不可以显示的控制符F1,ctr... 而ISO-8859-1是启用了ASCII码的最高位,理论上是能再多128位,实际上没用掉这么多,至于多了那些,你们自己查下表 UTF-8是可变长的,具体中文几个字节,怎么

某表含有N个字段超精简模糊查询方法

我们在做多个字段模糊查询时,是不是觉得非常麻烦?比如我要模糊查询某表多个字段存在某数据时,如下 select * from table where a like '%key%' or b  like '%key%' or c like '%key%'.......... 上面的语句不但长,而且写起来好麻烦.我们是不是有更好的办法呢? 答案是肯定的.我们可以这样写: SELECT * FROM  table where CONCAT(a,b,c......) like '%key%' 这样不就显得