2014-11-23 172 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)