问题现象:
今天在搭建微服务架构项目后,启动某个微服务时,遇到了如下报错:
java.lang.IllegalArgumentException: Not a managed type: class com.xxx.xxx.model.xxx
问题分析:
根据报错信息可知,这是因为找不到model下某个实体类,也就是说没有找到匹配的目录路径!
这是因为在微服务架构中,当前微服务会在当前路径下去匹配这个路径:
这是我的dao接口:
在继承jpa时,要传入实体类,而这个实体类是放在另一个微服务中的,因此当指定了路径之后启动,发现在当前微服务下找不到,因此需要在启动类中,指定实体类的包路径(如:
@EntityScan(basePackages={"com.stephen.shopcommon"})
), 配置完之后,就会去整个项目中匹配这个路径,因此就可以找到对应的微服务的实体类路径了.
解决方法:
在当前启动类中添加@EntityScan注解,在basePackages属性中配置实体类所引用的微服务路径:
启动成功: