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>