数据库里面的一个表(sys_module): 有列内容为:objchild[0],s2.getPid() 
以下是简略代码:         String  hqlParameter=从上面表里面获得查询条件;
类似于: String  hqlParameter="objchild[0],s2.getPid()";
Query  hql=systreenodeDao.findByHQL(select o.id,o.name,from SysModule o where o.objId=? and o.pid=? order by o.name);String hqlParameter[]=hqlParameter.split(",");//按逗号分隔查询条件for(int i=0;i<hqlParameter.length;i++)
{
  hql.setParameter(i,hqlParameter[i]);//分别设置查询参数值
}
return child3.list();这样拼出来的HQL,语句执行不了,有什么办法解决呢? 原因是objchild[0]和s2.getPid()这2个参数没有值,就是一个纯粹的字符串,造成HQL拼写不正确。 

解决方案 »

  1.   

    objchild[0],s2.getPid() 是表中的值还是,objchild[0],s2.getPid() 得到的结果是表中的值
    像  字段a           字段b
        objchild[0],s2.getPid() 
    还是s2.getPid() 得到2
    objchild[0]得到1
    字段a           字段b
     1                2 
      

  2.   

    s2是一个对象,它要去值的,objchild是个obj数据它也是要取值的:就是你说的这种方式:
    s2.getPid() 得到2 
    objchild[0]得到1 
      

  3.   

    那HQL语句不能那样写呀,那样的话“objchild[0]”,“s2.getPid()”成字符串了,不能先得到值在给hql吗 
      

  4.   


    对啊,有什么办法 把他们还原成原来的对象啊?
    我的这个参数都是动态的比如objchild[0]就是作为一个条件查询的,for循环的过程中objchild[0]值是不同的。我现在是做的一个通用的 树,要求要根据不同hql语句生成不同的树。这样的话不同的树,参数不同,参数个数不同   
    那我只有把hql语句、和相应的查询条件放到数据库里面,然后在程序里面动态拼装了。
      

  5.   

    数据库有个表列内容为:objchild[0],s2.getPid()
    我把它取出来然后,放到程序里面能取到值;
    例如:
    Stirng id=objchild[0]; 打出来后这个 id=2  
      

  6.   

    构建查询方略呀!Hibernate 反正越用感觉越不方便,重写又很大工作量。。没办法。search(String hql,Object[] ojb,int len){from Table where 1=1  #  #  #
    from Table $$自己动态置换#就行了,数组没有传入就默认置换为空}