CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

hibernate参数查询问题,50分相送!

楼主BigHill(山河水)2004-12-03 12:59:17 在 Java / 框架、开源 提问

1.出错代码:  
  s   =   null;  
  try   {  
      s   =   getSession();  
      Query   q   =   s.createQuery("from   Department   as   department   where   department.Id   like   '%?%'");  
      q.setString(0,   "开发部");  
      return   q.list();  
  }   finally   {  
      closeSession(s);  
  }  
  2.我已经发现了问题所在,但是不知如何解决。  
  调试后发现问题主要是...like   '%?%'中,我用了单引号,如果我直接写...like   '%开发部%'并执行,是正常的。  
  可能是q.setString(0,   "开发部");时,自动把   开发部   加上引号变成了"开发部",然后再代进?中,变成...like   '%"开发部"%',所以出错。  
  我想了一下,解决办法可以是...like   ?,然后q.setString(0,   "%开发部%");,但这样总是有点不好,请问大家有什么更好的办法,解决这个参数查询问题? 问题点数:0、回复次数:5Top

1 楼intelcao(网址)回复于 2004-12-05 02:35:23 得分 0

s   =   null;  
  try   {  
      s   =   getSession();  
      Query   q   =   s.createQuery("from   Department   as   department   where   department.Id   like   :department");  
      q.setString("department",   "'%开发部%'");  
      return   q.list();  
  }   finally   {  
      closeSession(s);  
  }  
   
  这样行不行?Top

2 楼a10002(A万零贰)回复于 2004-12-05 17:55:37 得分 0

q.setString(0,   "开发部");  
  q.setString(1,   "开发部");  
   
  Top

3 楼passwords(name)回复于 2004-12-06 13:52:20 得分 0

 
  try   {  
      s   =   getSession();  
      String   HQL_QUERY="from   Department   as   department   where   department.Id   like   ?";  
      List   list   =   s.find(HQL_QUERY,   "%开发部%",   Hibernate.STRING);  
   
      return   q.list();  
  }   finally   {  
      closeSession(s);  
  }  
  试下吧,具体怎么该自己看,我随手写的没测过  
  Top

4 楼BigHill(山河水)回复于 2004-12-08 11:46:01 得分 0

q.setString(0,   "开发部");时,hibernate会把   开发部   这三个字加上引号后   '开发部'   代入SQL语句。  
  请问有没有办法,使q.setString(0,   "开发部");时   开发部   这三个字不用加上引号代入SQL语句中。  
  Top

5 楼etiox(小乙)回复于 2004-12-09 09:40:40 得分 0

passwords(name)是正解。  
  q.setString(0,   "开发部");语句中给字符串加上单引号,以及对其他非法字符的过滤都是不可避免的,所以必须像passwords(name)写的那样在调用之前对字符串进行处理。  
  如果不想做这种处理的话,建议还是使用Hibernate提供的条件查询(Criteria   Query)  
  ====  
  List   departmentList   =   s.createCriteria(Department.class)  
          .add(   Expression.like("Id",   "%开发部%")   )  
          .list();Top

相关问题

  • hibernate查询参数中文问题,解决必有高分相送.
  • Hibernate查询中怎么传递中文参数?如下
  • ADO参数查询?
  • 在hibernate查询语句参数中如果有中文,就有错误
  • JBuilder中参数化查询
  • 参数查询的问题
  • 参数查询问题
  • hibernate的查询
  • HIBERNATE查询出错
  • hibernate高级查询

关键词

  • 查询
  • 语句
  • hibernate
  • 解决
  • 开发部
  • setstring
  • department
  • closesession
  • getsession
  • 加上引号

得分解答快速导航

  • 帖主:BigHill

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo