Hibernate怎么查询不到中文呢
public List search(GuestBook gb,String KeyWord,String isadmin){
session= HSF.currentSession();
System.out.println("开始搜索");
//Transaction表示一组对DB的交易
tx = session.beginTransaction();
Query query = session.createQuery("from LeaveWord l where l.ID in ("+gb.getIds()+") and l.levwTitle like '%"
+KeyWord+"%' and ifShow in (0"+isadmin+") order by levwDate desc");
System.out.println(query);
System.out.println(query);
List lwList =null;
try {
lwList=query.list();
System.out.println("已经查找到了留言LIST");
} catch (HibernateException e) {
e.printStackTrace();
}
Iterator iterator = lwList.iterator();
while(iterator.hasNext()) {
}
return lwList;
}
高手请帮我看看这个方法,为什么能够查询到字母和数字,却查询不到中文的呢?谢谢了
问题点数:20、回复次数:19Top
1 楼hyn2005(2006没有失望)回复于 2006-07-18 15:53:53 得分 0
高手快救救我吧,要不我就死定了Top
2 楼loverface(双面人)回复于 2006-07-18 16:08:33 得分 0
代码格式真乱,看得头晕.
检查下你的KeyWord里的中文正常吗?是不是乱码?是的话转一下码就OK啦.Top
3 楼hyn2005(2006没有失望)回复于 2006-07-18 16:14:17 得分 0
不是乱码。那我在帖一次
public List search(GuestBook gb,String KeyWord,String isadmin){
session= HSF.currentSession();
System.out.println("开始搜索");
//Transaction表示一组对DB的交易
tx = session.beginTransaction();
Query query = session.createQuery("from LeaveWord l where l.ID in ("+gb.getIds()+") and l.levwTitle like '%" +KeyWord+"%' and ifShow in (0"+isadmin+") order by levwDate desc");
System.out.println(query);
System.out.println(query);
List lwList =null;
try {
lwList=query.list();
System.out.println("已经查找到了留言LIST");
} catch (HibernateException e) {
e.printStackTrace();
}
// Iterator iterator = lwList.iterator();
// while(iterator.hasNext()) {
// }
return lwList;
}
Top
4 楼hyn2005(2006没有失望)回复于 2006-07-18 16:17:17 得分 0
呵呵,只能这样了帮帮忙啦Top
5 楼ddystar()回复于 2006-07-18 16:33:33 得分 0
注意编码格式一致Top
6 楼hyn2005(2006没有失望)回复于 2006-07-18 16:37:03 得分 0
谢谢批评指导,但是我把他粘上之后才这样的呀,原谅我吧Top
7 楼loverface(双面人)回复于 2006-07-18 16:55:03 得分 0
不会吧,不是乱码应该可以查出来的吧!!
你把KeyWord打印出来看看是什么.Top
8 楼GavinLau(枫)回复于 2006-07-18 16:58:20 得分 0
我也遇到了这个问题,where 条件里有中文查不出来,后来我用JDBC写了个查询语句,就能够查出来
rs=stmt.executeQuery("select * from auditbook where docname Like '%借阅%'");
编码绝对是没有,可就是查不出来,关注......Top
9 楼spiritsl(梦雨心蓝)回复于 2006-07-18 17:02:05 得分 0
有全角和半角之分Top
10 楼hyn2005(2006没有失望)回复于 2006-07-18 17:07:42 得分 0
全角和半角?那么如何判断用户的输入法是全角还是半角?该怎么解决呢?Top
11 楼GavinLau(枫)回复于 2006-07-18 17:17:22 得分 0
跟半角全角没多大关系吧
Object [] parameter={%+"郁闷"+%};
String hql="from table as t where t.name like ?";
this.getHibernateTemplate().find(hql,parameter);
Top
12 楼loverface(双面人)回复于 2006-07-18 17:17:23 得分 10
文字应该没有全角和半角之分吧,符号才有
Query query = session.createQuery("from LeaveWord l where l.ID = :id and l.levwTitle like :keyword ");
query.setParameter("id",gb.getIds());
query.setParameter("keyword","%"+params+"%");
改成这样试试Top
13 楼GavinLau(枫)回复于 2006-07-18 17:18:19 得分 10
this.getHibernateTemplate().find(" from table as t where t.name like ?",new Object[] {"不郁闷"}, new Type[] {Hibernate.STRING});
用这个Top
14 楼loverface(双面人)回复于 2006-07-18 17:25:36 得分 0
嗯,反正就这个意思,不要直接并HQL,这样会有BUG的Top
15 楼hyn2005(2006没有失望)回复于 2006-07-18 17:28:35 得分 0
我去试试,先谢谢你们大家了Top
16 楼sundeveloper(51TTUP)回复于 2006-07-18 17:56:53 得分 0
这样是可以的:
将关键字转成iso8859-1,,再去查.. new String("关键字".getBytes("GBK"),"iso8859_1");Top
17 楼hyn2005(2006没有失望)回复于 2006-07-18 17:57:17 得分 0
不知道怎么回事,现在报错了:
org.hibernate.hql.ast.QuerySyntaxError: unexpected AST node:
( [from com.xaoer.dowebsite.gBook.Beans.LeaveWord l where l.ID in (0,77,117) and l.levwTitle like :keyword order by levwDate desc],
为什么keyword参数没有替换掉呢?还请大家多多帮忙了Top
18 楼hyn2005(2006没有失望)回复于 2006-07-18 18:06:41 得分 0
to : sundeveloper(51TTUP),不可以呀,我用的是UTF-8的编码Top
19 楼hyn2005(2006没有失望)回复于 2006-07-18 19:06:51 得分 0
终于解决了,就向你们所说的,不能并接HQL,谢谢你们了,给分Top




