getSession().createQuery()发生
java.lang.reflect.InvocationTargetException错误
我刚学SSH的,所以不知道什么原因
Spring和Hibernate已经配置好了,我新建一个Junit测试Spring和hibernate工作情况,发现一切正常
Java code
ApplicationContext ctx = new FileSystemXmlApplicationContext("XXXXX.xml");
EmpService abccc = (EmpService)ctx.getBean("empService");
System.out.println(abccc.validLogin("123","123"));
现在加入了struts,在其中一个action中发现错误
Java code
int result = empService.validLogin(getUserName(), getPassWord());
这句话有错误,错误内容是
Java code
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
我设置了断点跟踪,发现是在DAOImpl文件中发生的一个错误
Java code
log.debug("finding MgrTable instance by Name And Passworld");
try {
String queryString = "from MgrTable as model where model.empName"+
"= ? and model.empPass= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, name);
queryObject.setParameter(1, passWorld);
if (queryObject.list().size()>0) {
return (MgrTable)queryObject.list().get(0);
}else {
return null;
}
} catch (RuntimeException re) {
log.error("find by Name And Passworld failed", re);
throw re;
}
其中的Query queryObject = getSession().createQuery(queryString);
执行getSession()一切正常,但是执行createQuery()函数的时候发现发生了错误,很奇怪的是为什么单元测试一切正常,但是通过web执行后却发生错误。高手给点思路,本人太菜了
------解决方案--------------------这个异常,一般是由于调用Mathod类的invoke()方法,该方法所代表的指定方法抛出异常时,或者调用Constructor类的newInstance()方法,该方法所代表的底层构造方法抛出异常时,由java.lang.reflect.InvocationTargetExceptio异常包装后作为新的
异常抛出而产生,默认异常信息是NULL。
所以我怀疑是使用反射的方式调用构造函数时,由于数据或者其他问题造成了构造方法抛出异常,以Invocation
TargetException异常的方式显示出来。
问题出在:
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
仔细检查一下,应该能解决
------解决方案--------------------可能是参数传递问题~
------解决方案--------------------单元测试的时候你用FileSystemXmlApplicationContext容器 谁知道你现在是怎么做的
------解决方案--------------------最好是把你的spring配置文件贴出来