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[] 入参的方法。