`

java.lang.ClassCastException: $Proxy8 incompatible with lin.dao.impl.ExchangeDao

 
阅读更多

Spring transaction practice, an error example: 

 

package lin;
import lin.dao.impl.ExchangeDaoLocator;
import lin.dao.impl.TestDaoLocator;
import lin.domain.Exchange;
import lin.domain.Test;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

public class DbTest {

	public static void main(String[] args) {

		try {
			ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
			
			JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
			jdbcTemplate.execute("select * from dual");
			
			ExchangeDaoLocator locator1 = (ExchangeDaoLocator) applicationContext.getBean("exchangeDaoLocator");
			Exchange exchange = locator1.findById("HK");
			System.out.println(exchange.getExchangeCode());
			
			TestDaoLocator locator2 = (TestDaoLocator) applicationContext.getBean("testDaoLocator");
			Test test = locator2.findById("1");
			System.out.println(test.getC2());
			
			System.out.println("----------------End----------------");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

 

	<bean id="abstractDaoLocator" class="lin.dao.AbstractDaoLocator" abstract="true">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="exchangeDaoLocator" class="lin.dao.impl.ExchangeDaoLocator" parent="abstractDaoLocator">
	</bean>

	<bean id="testDaoLocator" class="lin.dao.impl.TestDaoLocator" parent="abstractDaoLocator">
	</bean>

	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
		<property name="defaultTimeout" value="15"/>
		<property name="rollbackOnCommitFailure" value="true"/>
	</bean>
	
	<aop:config>
		<!-- Normal Example -->
		<aop:advisor pointcut="execution(* lin.DbTest..*(..))" advice-ref="requiresNewTxAdvice" />
		<!-- Wrong Example - java.lang.ClassCastException: $Proxy8 incompatible with lin.dao.impl.ExchangeDaoLocator -->
		<aop:advisor pointcut="execution(* lin.dao.impl.*.findById(..))" advice-ref="requiresNewTxAdvice" />
	</aop:config>
	
	<tx:advice id="requiresNewTxAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="*" propagation="REQUIRES_NEW" />
		</tx:attributes>
	</tx:advice>

 

 

 

分享到:
评论

相关推荐

    java.lang.ClassCastException

    在Java编程中,`java.lang.ClassCastException`是一个运行时异常,通常发生在强制类型转换时,如果尝试将一个对象转换为其非兼容类型时就会抛出。这个异常表明在编译时可能成功的类型转换,在运行时被证明是错误的。...

    java.lang.NoClassDefFoundError错误解决办法

    "java.lang.NoClassDefFoundError错误解决办法" java.lang.NoClassDefFoundError错误是一种常见的Java错误,它发生在Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。下面是该错误的解决...

    client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar

    Load canal adapter: es7 failed java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: ...canal-adapter1.1.5报错, 将client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies....

    android gson 混淆代码 问题

    在Android开发中,Gson库是一个非常常用的工具,它由Google提供,用于将Java对象转换为JSON字符串,反之亦然。然而,在混淆代码时,可能会遇到一些问题,导致Gson无法正常工作。本文将深入探讨这些问题及其解决方案...

    java操作xml dom dom4j sax jdom

    在Java编程中,XML(可扩展标记语言)是一种被广泛用于数据存储和交换的格式。为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document ...

    JAVA常见异常解析,面试用

    - **java.lang.ClassCastException**:当尝试将对象强制转换为不兼容的类型时抛出。 - **java.lang.NegativeArraySizeException**:创建具有负长度的数组时抛出。 - **java.lang.SecurityException**:在安全管理器...

    java编程常见问题

    8. **java.lang.VirtualMachineError**: 表示虚拟机严重损坏或资源不足。这可能是硬件故障、操作系统崩溃或JVM bug的结果。 9. **java.lang.ArithmeticException**: 当执行如整数除以零这样的非法算术运算时,会抛...

    java常见异常.pdf

    7. **java.lang.ClassCastException**: 当试图将对象强制转换为其非兼容类型时抛出。在进行类型转换前,应确认对象的实际类型。 8. **java.lang.NegativeArraySizeException**: 创建具有负长度的数组会导致此异常。...

    Android 简单封装一个精美、好用的菜单型PopupWindow

    2. **初始化PopupWindow**:在Java代码中,我们首先需要实例化PopupWindow对象,传入之前创建的布局文件。例如: ```java View popupView = LayoutInflater.from(context).inflate(R.layout.popup_menu, null); ...

    安卓自动轮播图 广告位

    二:保证 ImageCycleView的 父布局是LinearLayout 否则可能会报异常,比如 java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$...

    java异常详解

    - **`java.lang.ClassCastException`**:当试图将对象强制转换为不兼容类型时抛出。 - **`java.lang.AbstractMethodError`**:当子类没有重写抽象父类的抽象方法时抛出。 - **`java.lang.ClassCircularityError`**:...

    Java中常用异常列表[收集].pdf

    8. **`java.lang.NegativeArraySizeException`**:数组负下标异常。当试图创建一个具有负大小的数组时,会抛出此异常。数组的大小必须为正整数。 9. **`java.io.IOException`**:输入/输出异常。在处理I/O操作(如...

    JAVA常见的错误

    JAVA常见的错误 JAVA 是一种流行的编程语言,广泛应用于软件开发领域。然而,在使用 JAVA 开发软件时,经常会遇到一些常见的错误。本文档将对这些错误进行总结和解释,以帮助开发者更好地避免和解决这些错误。 1. ...

    client-adapter.es7x-1.1.5-jar-with-dependencies.jar

    解决canal同步es报错: java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource

    常见异常处理方案

    8. **`java.lang.NegativeArraySizeException`**: 创建一个负长度的数组时抛出。数组长度必须为非负整数。 9. **`java.lang.SecurityException`**: 安全管理器阻止了请求的操作。在执行敏感操作(如文件系统...

    JAVA常见异常解析

    8. **java.lang.NegativeArraySizeException**: 创建负长度的数组会导致此异常。数组长度必须是正整数。 9. **java.io.IOException**: 这是一个广义的异常,用于表示输入/输出操作中的错误,如文件读写问题。...

    java异常解决方案.docx

    * java.lang.ClassCastException: + 解决方案:检查类的继承关系,是否存在多继承或循环继承的问题,尝试使用 instanceof 运算符来检查对象的类型。 * java.lang.UnsupportedClassVersionError: Bad version ...

    java 异常种类总结【转】.docx

    java.lang.UnsupportedClassVersionError 是一种不支持的类版本错误,指的是在程序中 Java 虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前 Java 虚拟机支持的时候,抛出的异常。 33. java.lang...

    java.lang.ClassCastException(解决方案).md

    项目中碰到的,已解决,写个文档记录一下

Global site tag (gtag.js) - Google Analytics