论坛首页 入门技术论坛

Hibernate3.0.5中文查询问题

浏览 2179 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-13   最后修改:2009-07-10
各位好,在这里提个问题,是我现在项目里面未解决的,由于本人对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字段的中文条件查询时就没问题。

请问各位,除了第二种方法外,是否还有其它的方法可以解决中文查询?这个究竟什么问题?
   发表时间:2007-07-13  
由于服务器涉及到其他项目,所以暂时不考虑升级Hibernate...
0 请登录后投票
   发表时间:2007-07-17  
自己顶一下....
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics