我只能给你些建议。在写SQL语句的时候 用拼写查寻吧。。

解决方案 »

  1.   

    额。是HQL 应该是根据前台传的信息确定HQL语句。这个应该在HQL拼写的时候能做到 。
      

  2.   

    是不是说,hibernate没有什么好的办法来实现动态查询,还是需要自己来做大量的判断。
      

  3.   

    是的,写情况都很复杂,且不固定,hibernate没有办法搞定所有情况
      

  4.   

    find不是可以带一个数组么,查询条件按sql里出现顺序放到数组里去
      

  5.   

    如果有的选项,提交的时候没填,那传过来的是NULL或“”,能放到数组里面?不会错?
      

  6.   

    如果条件不是必要的,就别用find了吧
      

  7.   

    Hibernate的Criteria接口是非常适合动态构造查询条件的,你可以这样来做
    getHibernateTemplate.execute(new HibernateCallback() {
     public Object doInHibernate(Session session) throws HibernateException {
    Criteria criteria = session.createCriteria(User.class);
    if(employeeid != null) {
    criteria.add(Restrictions.eq("employeeid", employeeid));
    }
    if(name !=null) {
    criteria.add(Restrictions.eq("name", name));
    }
                            if(sex != null) {
                                    criteria.add(Restrictions.eq("sex", sex));
                            }
     }
    });
    这种方式是可以完成功能的,其中employeeid,name,sex都是方法的参数
      

  8.   

    我知道楼上的方法,但感觉和拼HQL差不多,不知道有没有更好的方法?
      

  9.   

    晕了,你用HQL还不把你给麻烦死...
      

  10.   

     if(name !=null) {
                    criteria.add(Restrictions.eq("name", name));
                }= if(name !=null) {
                    hql+=“and name=“+name
                }
    差不多!!
      

  11.   

    晕,你自己看你写的有没有问题...hql可以这样写吗?