我想将字符串列表作为参数传递
当我的应用程序生成我的查询时,我有这个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]')
这是我使用List
的jave中的源代码 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;
}
所以我的查询产生的问题有这样的代码:
in('[236359981,236359982,236359983]'),这是假的 它应该是这样的 in('236359981',''236359982','236359983')
答案 0 :(得分: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)