日期:2014-05-17  浏览次数:20811 次

String转换成long[]数组后,调用dao失败
将String转换成long[]数组,代码如下:
package cn.itcast.oa0909.utils;

import java.util.Arrays;
import java.util.Collections;

public class OAUtils {
public static Long[] string2Longs(String ids){
String[] s = ids.split(",");
Long[] aa = new Long[s.length];
// int index = 0;
// for(String string:s){
//
// aa[index] = Long.parseLong(string);
// index++;
// System.out.print(aa[index]+"dd");
// }
for(int i=0;i<ids.length();i++){
String str=s[i];
aa[i]=Long.valueOf(str);
System.out.println(aa[i]+"DD");
}
return aa;
}
}

转换之后,在action中调用service方法如下:
public String savePrivilege(){
System.out.println("||"+this.getMids()+"||"+this.getUid());
User user=userService.getUserById(this.getUid());

Set<Menuitem> menuitems=menuitemService.getMenuitemsByIDS(OAUtils.string2Longs(this.mids));

user.setMenuitems(menuitems);

userService.updateUser(user);
return SUCCESS;


}
问题是:如果我传的数字值只有一位则可以调用到DAOIMP(from Menuitem  where mid in (1);
如果调用传递的值是对个数组,如[10,20]则根本就没有调用DAOIMP。
难道Set<Menuitem> menuitems=menuitemService.getMenuitemsByIDS(OAUtils.string2Longs(this.mids));
这个写错了吗?打印出来的结果没什么问题啊。
谢谢大家!

------解决方案--------------------
你将String 转换为 long[] 后,对应的调用方法的入参有没有做修改呢,如果没有做修改,则之前方法应该传入String型参数的,你给了long[] ,它找不到对应的long[] 入参的方法。