SpringBoot1.2.6整合Activiti6.0遇到的bug

前言

最近在学习慕课网课程springboot.1.2.6与activiti6.0整合的过程中遇到了许多问题,其中一个异常断断续续折腾了我一个周(其实并没有花多少时间,但是白天上班,晚上回来刚开始准备解决的时候就犯困了。。。)。

所报的异常

一开始呢是报这个异常

看这个异常很明显,说我用来hibernate的二级缓存,但是没有配置它需要的factory所以报错,然后我就把hibernate的二级缓存给禁用了。

紧接着报如下异常:

说不能配置LocalContainerEntityManagerFactoryBean这个类,跟到使用这个类的地方DatabaseConfiguration里面。

我用Debug调式发现最终问题出在annotationDrivenTransactionManager这个方法,jpaTransactionManager.setEntityManagerFactory(entityManagerFactory());这个会出现类型转换的异常,也就是说entityManagerFactory()方法最终返回的对象和jpaTransactionManager要set的对象类型不一致,同时entityManagerFactory()返回的是一个EntityManagerFactory接口类,所以分析应该是springboot.1.2.6里面默认实现了一个EntityManagerFactory,所以我就不返回接口了,直接返回LocalContainerEntityManagerFactoryBean类即可。

修改之后,问题解决。有人问我为什么能精确定位问题,因为我天资聪慧帅气逼人吗,当然不是,因为我 百 度 了。

Spring Boot Rest App on GAE throws an exception cannot be cast to javax.persistence.EntityManagerFactory”

zhangxingrui wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!