我在DAO层执行sql语句,
sql=select count(*) from BztzZyxx where zzdm='0050030601' and bzdm=2 and xm like '%%' and xb like '%女%'  and used=1  
Query queryObject = getSession(sort).createQuery(sql).list();
执行后queryObject返回结果为0,但是同样这sql语句select count(*) from BztzZyxx where zzdm='0050030601' and bzdm=2 and xm like '%%' and xb like '%女%'  and used=1拿到数据库里执行是可用的,返回结果来3。如果姓名和性别为空select count(*) from BztzZyxx where zzdm='0050030601' and bzdm=2 and xm like '%%' and xb like '%%'  and used=1返回是有结果的。问题出在xm like '%%'和xb like '%%'如果没有值是可以查询的,
如果xm like '%张三%'或xb like '%男%'就查不出来了。小弟不知如何解决请求帮助。

解决方案 »

  1.   

    嗯,我也很疑惑,所以请求帮助。
    不知道是不是我数据库的事,我原来的是sql 2000 sp1 前几天升到sp4了
      

  2.   


    sql=select count(*) from BztzZyxx where zzdm='0050030601' and bzdm=2 and xm like '%%' and xb like '%女%'  and used=1 
    Query queryObject = getSession(sort).createQuery(sql).list(); 改成sql=select count(*) from BztzZyxx b where b.zzdm='0050030601' and b.bzdm=2 and b.xm like :name and b.xb like :gender  and b.used=1 
    Query queryObject = getSession(sort).createQuery(sql); 
    queryObject.setParameter("name","",Hibernate.STRING);
    queryObject.setParameter("gender","女",Hibernate.STRING);
    List list = queryObject.list();试试看
      

  3.   

    Query queryObject = getSession(sort).createQuery("select count(*) from BztzZyxx b where b.zzdm='0050030601' and b.bzdm=2 and b.xm like :name and b.xb like :gender  and b.used=1"); 
      

  4.   

    你那样好像不能查询到中文,解决方法用占位符,
    sql=select count(*) from BztzZyxx where zzdm='0050030601' and bzdm=2 and xm like ? and xb like ?  and used=1;
    getSession(sort).createQuery(sql).setString(0,"%%").setString(1, "%女%").list(); 
    如果还不行你就用Criteria criteria = getSession().createCriteria("BztzZyxx的模型类");
    criteria.add(Expression.like("xm", "");
    criteria.add(Expression.like("xb ", "女");
    criteria.list();
      

  5.   

    赫赫,hibernate引发的问题总是让人莫名其妙。
    你可以对同样的表,先从最简单的sql开始,逐步排查毛病在哪里
      

  6.   

    大家说的都对...但她现在是用SQL语句...并没有用HQL
    她的SQL并没有错...
    错的是她调用的方法..
    createQuery 应该改成 createSQLQuery还有xm like '%%' 这样的话意思是说 xm不为null的,
    如果是null就不满足>_< 
      

  7.   

    不为空干嘛不用 is not null ?
      

  8.   

    谢谢大家,找到错误了,我用的是Hibernate3.0 jar包我换成3.2的就可用了。
    再次感谢大家。
      

  9.   

    对象里的属性不为空 应该是 对象.属性 is not null用like %% 好像不妥吧