大家好,我这个sql里边用了一个 not  in  里边的参数是我直接拼进去的   如果我 要是用 ” ?“ 绑定变量的话   就不能执行sql ,出错,有哪位大侠能帮帮我吗 ?
   用  ”? “  绑定变量传递进去 的方法  。。谢谢了 
String sql ="from UserAccountInfo where tk3=? and lockendtime>? and no not in ("+ss+")";
 q = session.createQuery(sql1);
 q.setString(0, users);
 q.setDate(1, new Date());   用 “?”的话  q.setxxxx()什么类型的参数呢   这个ss  是多个 id

解决方案 »

  1.   

    no not in (?,?,?); 
    no是什么类型q.setxxxx()就是什么类型啊
      

  2.   


    这里边的 no是long类型的   但是 in里边要放多个long行的no   ss的形式应该是这样的  例如 :
    564525,566988,224447,5488544.。。可以多个的  
      

  3.   

    q.setString(0, users);
            q.setDate(1, new Date());  
             q.setLong(2, ss);这个会报错的   哪位大侠帮帮忙吧 
      

  4.   

    Long[] params = new Long[]{new Long(564525),new Long(566988),new Long(224447),new Long(5488544)};
    StringBuffer sBuffer = new StringBuffer();
    for(int i = 0;i < params.length ;i++){
    sBuffer.append("?").append(",");
    }
    sBuffer.deleteCharAt(sBuffer.length()-1);String sql ="from UserAccountInfo where tk3=? and lockendtime>? and no not in ("+sBuffer.toString()+")"; q = session.createQuery(sql1); 
    q.setString(0, users); 
    q.setDate(1, new Date());  
    if(params!=null&&params.length>0){
    for(int i = 0;i < params.length ;i++){
    q.setParameter(i+2, params[i]);
    }
    }
      

  5.   

    Long[] params = new Long[]{new Long(564525),new Long(566988),new Long(224447),new Long(5488544)}; 
    StringBuffer sBuffer = new StringBuffer(); 
    for(int i = 0;i < params.length ;i++){ 
    sBuffer.append("?").append(","); 

    sBuffer.deleteCharAt(sBuffer.length()-1); String sql ="from UserAccountInfo where tk3=? and lockendtime>? and no not in ("+sBuffer.toString()+")"; q = session.createQuery(sql1); 
    q.setString(0, users); 
    q.setDate(1, new Date());  
    if(params!=null&&params.length>0){ 
    for(int i = 0;i < params.length ;i++){ 
    q.setLong(i+2, params[i]);