我用hibernate中的hql语句写了一个条件查询,但是不能正常执行,请帮忙看一下

publicList<User>selectUser(Useruser){StringBufferstringBuffer=newStringBuffer();strin... public List<User> selectUser(User user) {
StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append("from User where 1=1 ");
if(user.getUsername()!=null&&user.getUsername().trim().length()>0){
stringBuffer.append("and username like +'%"+user.getUsername()+"%'");
}if(user.getSex()!=null&&user.getSex().trim().length()>0){
stringBuffer.append("and sex="+user.getSex());
}if(user.getEducation()!=null&&user.getEducation().trim().length()>0){
stringBuffer.append("and education="+user.getEducation());
}if(user.getIsUpload()!=null&&user.getIsUpload().trim().length()>0){
if(user.getIsUpload().equals("1")){
stringBuffer.append("and filename is not null");
}else if(user.getIsUpload().equals("2")){
stringBuffer.append("and filename is null");
}
}
String sql=new String(stringBuffer);
//1.开启session
Session session=sessionFactory.openSession();
//2.操作对象
Query query=session.createQuery(sql);
List<User>users=query.list();
session.close();
return users;

}
展开
 我来答
stefwujj
2013-09-02 · TA获得超过417个赞
知道小有建树答主
回答量:141
采纳率:100%
帮助的人:208万
展开全部
你报的错误是啥?很直观的看你的代码,在所有的and之前都没有空格,所以拼出来的HQL是有问题的,你的代码还有几个问题
1,最好用StringBuilder或者StringBuffered
2,最好不要用where 1=1这样查询效率最低。
如果你想了解更多的Hibernate查询或者HQL的东西,看我的个人简介里面的推荐资料。
结束之2012
2013-09-02 · 超过70用户采纳过TA的回答
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:137万
展开全部
肯定执行不了了 都没有空格 输出的sql 不对

建议:写一个 test方法 传一个user 进来 看看你输出的 sql 是什么样子 然后根据你的sql 一项项的调
还有 你那些个 !=null, .trim().length()>0 你就不能抽一个方法出来 这样好难看的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-02
展开全部
stringBuffer.append(" and education="+user.getEducation()); // and前,应该留一空格
如果查询的条件是字符串,应该加单引号。

——查询的条件,最好使用参数 。没你的环境,不太好测试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5renshuo
2013-09-02 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:158万
展开全部
你的sql只是相加了 但是你看看你的sql 的查询条件 如果都有的话 你的查询条件前后都没有空格,会连起来的,所以无法分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式