【问题标题】:Springboot @EntityScan not workingSpringboot @EntityScan 不起作用
【发布时间】:2018-12-08 04:44:47
【问题描述】:

我有一个 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:不是托管类型:类

【问题讨论】:

标签: java spring-boot


【解决方案1】:

我可以和你联系。我为此花费了无数个小时。

我将您的问题分为 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)。

无论如何,请确保您使用实体类安装实体项目:

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);
    }
}

维奥拉!

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 2016-07-04
    • 2018-10-02
    • 2019-04-28
    • 2021-12-10
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多