我有一个 Springboot 应用程序,我的实体模型与作为依赖项包含的主应用程序分离。
我的Application.java位于com.a.b.c这个包中
@SpringBootApplication
@EntityScan("com.a.b")
public class Applciation
{
public static void main(String args[])
{
SpringApplication.run(Applciation.class, args);
}
}
我的实体模型位于此包 com.a.b 内的另一个项目中
但我收到错误:引起:java.lang.IllegalArgumentException:不是托管类型:类
最佳答案
我能理解你。我为此花费了无数时间。
我将您的问题分为3部分(我将使用“entity-project”和“spring-project”来指代包含实体类的项目和尝试合并实体类的主项目):
第 1 部分(共 3 部分):确保您的实体类在实体项目中公开。
在实体项目的根目录下创建一个配置
package com.a.b
@Configuration
@Import ({Entity1.class, Entity1Repo.class, Entity1Key.class,
Entity2.class, ... })
class EntityConfig {}
第 2 部分(共 3 部分):确保您的实体类位于 spring-project 的类路径中。
既然您使用的是SpringBoot,我确定您使用的是maven(或Gradle)。
无论如何,请确保您使用 maven 安装了带有实体类的实体项目:
cd /path/to/entity-project/
mvn install -DskipTests
在spring-project的maven文件中,包含到entity-project中。
第 3 部分(共 3 部分):使用 EntityScan 注释。
这只是我的口味,但我更喜欢使用basePackageClasses而不是basePackage。
@SpringBootApplication
@EntityScan(basePackageClasses = {Entity1.class})
// use basePackageClasses to avoid type errors
@Import({com.a.b.EntityConfig.class}) // this is what you are missing
public class Applciation
{
public static void main(String args[])
{
SpringApplication.run(Applciation.class, args);
}
}
中提琴!
关于java - Springboot @EntityScan 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51094094/