java - Springboot @EntityScan 不工作

标签 java spring-boot

我有一个 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/

相关文章:

java - 如何在 JFrame 中动态重绘 JPanel?

java - 使用 GrailsReader 发送 openConnection 内容中的 formData

java - 两个具有不同属性的 Mongo 存储库

spring - @Valid 不适用于 spring 中 bean 类中的嵌套对象

java - 如何在 JUnit 测试期间在 @Configuration 类内部 Autowiring ?

java - `spring.config.location` 被忽略

java - 为实体管理器获取适当的属性

java - 所有作业完成后 Spring Batch 触发流程

java - 为什么JDK源代码取 `final`实例的 `volatile`副本

java - WAR 文件的烦人的 Tomcat 问题