早教吧 育儿知识 作业答案 考试题库 百科 知识分享

spring中事务报错:java.lang.ClassCastException:Proxy4我把事务应用到得dao层,应用到了UserDaoImpl.UserDaoImpl实现了UserDao。当我对UserDaoImpl进行事务管理的时候,报一个错误:java.lang.ClassCastException:$P

题目详情
spring中事务 报错:java.lang.ClassCastException: Proxy4我把事务应用到得dao层,应用到了UserDaoImpl. UserDaoImpl实现了UserDao。当我对UserDaoImpl进行事务管理的时候,报一个错误: java.lang.ClassCastException: $Proxy4 at com.pk.Spring_JDBC.Test.TestDataSource.test1(TestDataSource.java:19) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45) at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66) at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35) at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 当我去掉接口,UserDaoImpl不做实现类的时候,再运行,没有错了。这是为什么呀?
▼优质解答
答案和解析
贴一下TestDataSource.java的代码。 个人经验你的TestDataSource.java:第19行处引用的dao变量,类型定义是UserDaoImpl,而不是UserDao,请改成UserDao再试试。