2014-11-23 123 views
0

我想通过字符串列表作为参数甲骨文通过列表

当从我的应用程序生成的你查询我有这样的SQL代码:

SELECT * FROM Transfers TRANSFERS 
LEFT OUTER JOIN correspondence_copy CORRESPCPY on CORRESPCPY.ID_COPY = TRANSFERS.ID_COPY 
    WHERE TRANSFERS.ORDERNBR in ('[236359981, 236359982, 236359983]') 

这是源代码java的,我使用的列表

public List<SupEntity> sendSup(List<String> listOrderNumber) 
     throws Exception { 


     String query_tr = " SELECT * "; 


     query_tr += " FROM Transfers TRANSFERS "; 
     query_tr +=" LEFT OUTER JOIN correspondence_copy CORRESPCPY on CORRESPCPY.ID_COPY = TRANSFERS.ID_COPY " ; 

     query_tr +=" WHERE TRANSFERS.ORDERNBR in ('" +listOrderNumber + "')"; 


      SQLQuery sqlQuery = this.getSession().createSQLQuery(query_tr); 


      sqlQuery.setResultTransformer(Transformers.aliasToBean(
        SupEntity.class)); 

      List list = sqlQuery.list(); 

      return list; 
     } 

我把这个代码这个梅索德:

public SupListEntity getsupList(
     HttpServletRequest request, 
     SupListEntity supListEntity) 
     throws Exception { 
     List<String> list = new ArrayList<String>(); 
     List<CorrespondenceEntity> sendsupList =new ArrayList<SupEntity>(); 
     String [] tabOrder=null; 

       if(supListEntity.getId()!=null) 
       { 

        tabOrder=supListEntity.getId().split(","); 
        if(tabOrder!=null && tabOrder.length>0) 
        { 
         for(int i=0;i<tabOrder.length;i++) 
         { 
          list.add(tabOrder[i]); 

         } 
         sendsupList = supDAO.sendSup(list); 
          supListEntity.setCorrespondenceList(sendsupList); 

        } 



       } 

     return supListEntity; 
    } 

让我的查询这是generaed有这种代码的问题:

( '[236359981,236359982,236359983]')这是假的 它应该是这样的 在(” 236359981' , '236359982', '236359983')

回答

0

你可以试试这个:

String query_tr = " SELECT * "; 
     query_tr += " FROM Transfers TRANSFERS "; 
     query_tr +=" LEFT OUTER JOIN correspondence_copy CORRESPCPY on CORRESPCPY.ID_COPY = TRANSFERS.ID_COPY " ; 
     query_tr +=" WHERE TRANSFERS.ORDERNBR in (:list)"; 

SQLQuery sqlQuery = this.getSession().createSQLQuery(query_tr); 
sqlQuery.setParameterList("list", listOrderNumber)