程序代码如下:
String dmList="('01','02','05')";
List list=session.createSQLQuery("select dm,mc from table1 where dm in ?")
          .setString(0,dmList)
          .list();
不管dmList的值如何设置,查询结构都是为空。
数据库是oracle。对应的oracle语句
select dm,mc from table1 where dm in ('01','02','05')
执行正常,可以查处结果集。问题可能出现在dmList的写法上。
如何解决,特向朋友们求助。

解决方案 »

  1.   

    首先看一下后台,sql文是怎样的,然后再看什么问题
      

  2.   

    这个绑定变量有点问题你试试
    dmList = "'01'";
    createSQLQuery("select dm,mc from table1 where dm in (?)").这个应该行。因为你在绑定变量的时候其实传入的是一个sql语句的部分,带了().这种情况即使是在pl/sql里面也是不允许的,需要用动态sql在java里面,这种in的情况没碰过,有空帮你查查。
      

  3.   

    貌似不能这么写,in的话很烦的,直接整个sql写进去吧。
      

  4.   

    回1楼朋友:后台sql正常。
    回2楼朋友:你说的有道理,如果dmList只有一个参数,可以执行;如果有多个参数,查询就没有结果。
    回3楼朋友:直接拼接sql会使得语句很难看。
      

  5.   


    Query query = session.createSQLQuery("select dm,mc from table1 where dm in (?,?,?)") 
    query.setString(0,'01') ;
    query.setString(1,'02') ;
    query.setString(2,'05') ;
    List list=query .list(); 
      

  6.   

    这样写不能满足参数为List变量的要求。