我有一个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:不是托管类型:class
答案 0 :(得分:0)
我可以和你联系。我为此花费了无数小时。
我将您的问题分为三个部分(我将使用“ entity-project”和“ spring-project”来指代包含实体类的项目和试图合并实体类的主项目):
第1部分(共3部分):确保您的实体类在entity-project中公开。
在实体项目的根目录下创建配置
package com.a.b
@Configuration
@Import ({Entity1.class, Entity1Repo.class, Entity1Key.class,
Entity2.class, ... })
class EntityConfig {}
第2部分(共3部分):确保您的实体类位于spring-project的类路径中。
由于您使用的是SpringBoot,所以我确定您使用的是maven(或Gradle)。
无论如何,请确保您已使用实体类安装了entity-project:
cd /path/to/entity-project/
mvn install -DskipTests
在spring-project的maven文件中,将其包含到实体项目中。
第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);
}
}
中提琴!