Hibernate3.0.5中文查询问题

各位好,在这里提个问题,是我现在项目里面未解决的,由于本人对Hibernate的驾驭能力有限,贴出来大家研究一下,希望能找到解决的办法。
查询的代码如下:
...
session = dbLink.getJDBCConn();
tx = session.beginTransaction();
Query query = session.createQuery("from EsClass ec where ec.Name=? and ec.EsSchool.id=?");
query.setString(0, className);
query.setInteger(1, schoolid);
//Query query1 = session.createQuery("from EsClass ec where ec.Name=:className and ec.EsSchool.id=:schoolid");
//query1.setString("className", className);
//query1.setInteger("schoolid", schoolid);
List list = query.list();
tx.commit();
...
其中className为中文,从Oracle数据库中查得,该数据字段的类型是char类型。
使用这两种带参数的方法都查询不到,如果使用
...
Query query = session.createQuery("from EsClass ec where ec.Name='"+className+"' and ec.EsSchool.id="+schoolid);
...
进行查询,则需要在hibernate.cfg.xml加上
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>则可以查询到。

由于配置文件涉及到其他项目,当修改了配置文件后,出现其他项目一些地方无法查询(使用ID主键),可能需要大量修改其他的程序。
所以不能修改配置文件;且项目中要求使用统一的方法建立SessionFacrory,即不能自己为自己的系统中文查询部分单独加载配置文件来建立自己的SessionFacrory;
说明一点,在使用带参数方法进行非char字段的中文条件查询时就没问题。

请问各位,除了第二种方法外,是否还有其它的方法可以解决中文查询?这个究竟什么问题?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章