java.lang.IllegalArgumentException: Not an managed type:

一、思考方式

故事是这样的,昨天领导遇到了一个很奇怪的bug,正常使用spring boot项目,通过Jpa默认方法链接数据库时,在dao层不能找到entity类:

java.lang.IllegalStateException: Failed to load ApplicationContext

	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mapService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.boor.enp.dao.AddressCoordinatesDao com.boor.service.impl.fdlss.common.MapServiceImpl.addressCoordinatesDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addressCoordinatesDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class com.boor.enp.domain.AddressCoordinates
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
	at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
	at org.springframework.boot.test.SpringApplicationContextLoader.loadContext(SpringApplicationContextLoader.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
	... 24 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.boor.enp.dao.AddressCoordinatesDao com.boor.service.impl.fdlss.common.MapServiceImpl.addressCoordinatesDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addressCoordinatesDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class com.boor.enp.domain.AddressCoordinates
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
	... 40 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addressCoordinatesDao': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class com.boor.enp.domain.AddressCoordinates
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
	... 42 more
Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.boor.enp.domain.AddressCoordinates
	at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219)
	at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68)
	at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:67)
	at 

1. 思考过程:

​ 首先遇到这个问题我也是懵的,有效时间内并没有解决出来,只好从svn导出,慢慢解决;报错信息是 Failed to load ApplicationContextNot an managed type: class com.boor.enp.domain.AddressCoordinates,dao层没有找到entity,仔细看了确认并不是的代码的问题,是项目配置问题。

​ 在查了多个问题的解决方案后,在Application中添加了 @EntityScan(basePackages ={ “com.boor.enp.domain”,“com.boor.fdlss.domain”}),最终使项目能正常扫描到实体类。

​ 这样解决最终出现了其他的问题,就是数据库找不到表的问题,确认是数据库的配置除了问题。

问题解决:
在这里插入图片描述

重点:

  1. 上个问题在以前的代码中并没有加@EntityScan,在以前的配置中也没有这个配置,所以这种解决方式是在补漏洞,并不是从根上去解决问题,思考这个问题的解决,也就是定位问题并不深入。
  2. 多总结,多反思,并不是一句空话,每天遇到的问题,大概十个以上,有些是简单的问题,查一查就解决了,有些是难点的问题,需要查很久才能解决,多想想,多总结,反思下次怎么才能更少的时间解决问题,才能在下次遇到问题时快速的定位并解决。
  3. 在解决问题的时候,你会遇到一些模糊的知识点,一些只会用但不懂的新技术,对于这些,才是自己进步的地方。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值