在Hibernate 3中,如果HQL語句中有中文,Hibernate生成的SQL語句將會有亂碼。例如HQL語句"from Churukou as c where c.name='阿蒙'",在控制臺中打出的語句為:Hibernate: select churukou0_.OBJECTID as OBJECTID, churukou0_.NAME as NAME0_ from SDE.CHURUKOU churukou0_ where churukou0_.NAME='???è'
解決辦法是在hibernate的設置文件hibernate.cfg.xml的</session-factory>中加入這么一行:
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>