1. 程式人生 > >Hibernate使用createSqlQuery進行模糊查詢時找不到數據

Hibernate使用createSqlQuery進行模糊查詢時找不到數據

hql slist org 結果 reat nbsp ring 模糊查詢 div

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>

Hibernate使用createSqlQuery進行模糊查詢時找不到數據