hibernate查询问题,急急急··在线等··拜托了···

JORY_BB 2008-09-21 12:22:43
我用SSH三个框架做的项目,写的语句是:
public List searchInfor(String str,int x,int y){
session = sessionFactory.openSession();
String hql = "from Information where ITitle like '%"+str.toString().trim()+"%'";
Query query = session.createQuery(hql);
query.setFirstResult(x);
query.setMaxResults(y);
List list = query.list();

System.out.print(list);
session.close();
return list;
}

当str传进来英文值时可以查到数据,但是str传中文进来时查不出来数据,程序不报错,只是查不出来东西··这是为什么啊?哪里出错了????
(注:过滤器写过了,登陆的时候用中文名字登陆,传入的是中文值,都可以登陆进去)
...全文
190 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
kissclf 2008-09-23
  • 打赏
  • 举报
回复
"from Information where ITitle like '%"+str.toString().trim()+"%'";
你这种拼SQL的方式不对,改成站位符的方式 ? =:
wangyi123 2008-09-22
  • 打赏
  • 举报
回复
学习,帮顶
xt2008 2008-09-22
  • 打赏
  • 举报
回复
在Query query = session.createQuery(hql); 这一句上面把str的值print出来看看。
YOYOOOP 2008-09-22
  • 打赏
  • 举报
回复
str乱码了吧
壹个难人 2008-09-22
  • 打赏
  • 举报
回复
用log4j打印输出一下执行的SQL语句,看看是不是有问题
应该是中文乱码问题,我碰到过一次的
JORY_BB 2008-09-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xnfzr 的回复:]
可能数据库字符集问题,你和弄成gbk 44看。
再一个就是""会不会出问题,其它没了,想不出。
[/Quote]

加我下,私聊··
henry_fuzr 2008-09-22
  • 打赏
  • 举报
回复
可能数据库字符集问题,你和弄成gbk 44看。
再一个就是""会不会出问题,其它没了,想不出。
JORY_BB 2008-09-22
  • 打赏
  • 举报
回复
数据库是SQLserver2000 我没设置,是默认的。应该是GB2312吧·
henry_fuzr 2008-09-22
  • 打赏
  • 举报
回复
你数据库字符集用的是什么?
JORY_BB 2008-09-22
  • 打赏
  • 举报
回复
打印出来的值都正常啊,不是乱码
zoujialiang 2008-09-22
  • 打赏
  • 举报
回复
String hql = "from Information where ITitle like '%"+str.toString().trim()+"%'";
System.out.println(hql);
打印出这条hql语句看看。。
caoxiaoyu111 2008-09-22
  • 打赏
  • 举报
回复
直接println打印str.toString()出来,看看是什么
henry_fuzr 2008-09-22
  • 打赏
  • 举报
回复
String hql = "from Information where ITitle like '%"+str.toString().trim()+"%'";
from Information where ITitle like '%"+str.toString().trim()+"%'这句看看是什么值,就知道原因了。
JORY_BB 2008-09-21
  • 打赏
  • 举报
回复
我用的是SQLserver2000,不用转换吧,直接写个过滤器就可以了啊,而且我用中文名登陆的可以成功啊··登陆还是传值进去查找啊·
内存泄漏 2008-09-21
  • 打赏
  • 举报
回复
要转换字符集吧..转成你数据库中的字符集...
fireinjava 2008-09-21
  • 打赏
  • 举报
回复
设断点Debug下,调试的时候对str.toString().trim()进行Watch,看执行到这句时它是什么值。
JORY_BB 2008-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yongtree 的回复:]
引用 3 楼 fireinjava 的回复:
设断点Debug下,调试的时候对str.toString().trim()进行Watch,看执行到这句时它是什么值。

我也感觉是这句话的问题,直接like str试一试。
[/Quote]

我把语句改成这样了,还是不行:
public List searchInfor(Information infor,int x,int y){
session = sessionFactory.openSession();
String hql = "from Information i where i.ITitle like '%"+infor.getITitle()+"%'";
Query query = session.createQuery(hql);
query.setFirstResult(x);
query.setMaxResults(y);
List list = query.list();
System.out.print(list);
session.close();
return list;
}
yongtree 2008-09-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fireinjava 的回复:]
设断点Debug下,调试的时候对str.toString().trim()进行Watch,看执行到这句时它是什么值。
[/Quote]
我也感觉是这句话的问题,直接like str试一试。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧