count = ((Integer) getHibernateTemplate().find("select count(*) from Dv d where d.type=?",type).get(0)).intValue();1.拼sql或hql都是很不好的习惯
2.hibernate3中使用拼hql的方式进行中文查询是无法得到结果的(转译成sql时中文会乱码)

解决方案 »

  1.   

    恩 是的啊 hibernate3.0就乱码啊 
    我要是想组合查询那?
    public int getRows(String isPass,String type){
    }
    初学 谢谢 
      

  2.   

    编码问题一直困扰着我们这些写java程序的!我总结几种原因吧!
    1,数据库的编码问题,如用mysql,最好在链接时指定链接编码!
    2,字段的编码,如在mssql里nvarchar与varchar的区别!
    3,页面的问题在显示的时候怎么指定!如在weblogic最好指定一个全局的,要不然多次指定编 码  会出错的
    4,在请求的时候也要好好看看,如在tomcat5.5以上post和get是不一样的!要分开做编码!
    暂时就写这么多了!
    楼主写这么少,看不出是哪发面原因,估计是数据库的问题!
      

  3.   

    我的原因就是因为用的Hibernate3.0
    我在网上找了下原因 
    和Saro(三生)  说的一样
    谢谢Saro(三生) 
    也谢谢fu80008(福子)的总结
    我现在做了一个可能会影响效率所以想问下怎么组合查询
    谢谢各位
      

  4.   

    getHibernateTemplate().find(hql,new Object[]{isPass,type});
      

  5.   

    恩 呵呵 知道了
    帮我看下我这样写好吗?组合查询
    boolean whereAdded = false;
    int count = 0;
    String hql = "select count(*) from Dv d";
    if (isPass != null && !isPass.trim().equals("")) {
    count = ((Integer) getHibernateTemplate().find(hql + " where d.isPass=?",isPass).get(0)).intValue();
    whereAdded = true;
    }
    if (type != null && !type.trim().equals("")) {
    if(whereAdded) {
    count = ((Integer) getHibernateTemplate().find(hql + " where d.type=? and d.isPass=?",new Object[]{type,isPass}).get(0)).intValue();
    } else {
    count = ((Integer) getHibernateTemplate().find(hql + " where d.type=?",type).get(0)).intValue();
    }
    }
    if(isPass == null && type == null){
    count = ((Integer) getHibernateTemplate().find(hql).get(0)).intValue();
    }
    return count;
    这样会出现两次查询 如果是组合