hql/sql傳中文引數出現亂碼
阿新 • • 發佈:2019-02-17
問題:如題
解決: 推薦第一種解決方案
1.佔位符
可以使用?或者:***的方式在外部配置查詢引數,如:
Query query=session.createQuery("from TestStu s where s.team=:team and s.age>:age"); 或者
Query query=session.createQuery("from TestStu s where s.team=? and s.age>?);
這句話的意思是從一個持久的team物件中,取出其持有的TestStu集合,並篩選出age大於執行資料的記錄
我們可以這樣設定引數
query.setParameter("team",team,Hibernate.entity(TestTeam.class));
//或者使用query.setEntity("team",team);
query.setParameter("age", 15);
但我們決不能在HQL中又出現?,又出現變數佔位符,即
Query query=session.createQuery("from TestStu s where s.team=? and s.age>:age);
這樣,在設定引數時候,會出現異常如下:
cannot define positional parameter after any named parameters have been defined [from Search.filter.TestStu s where s.team=:team and s.age>?]
2.配置檔案 在spring配置檔案中加入紅色部分<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
........
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
</props>
</property>
.............
</bean>