【问题标题】:Spring JPA multi module projectSpring JPA 多模块项目
【发布时间】:2022-01-24 01:50:44
【问题描述】:

我正在尝试创建一个 Spring 多模块项目。
模块 1,处理应用程序启动和基本的 Web MVC 服务。
模块 2,适用于 MultiTentanted Jpa

模块 2,作为独立应用程序运行良好,但是当我将它作为依赖项包含在模块 1 中时,我收到以下错误,Caused by: org.springframework.data.mapping.MappingException: couldn' t 查找类型类 uk.rteksoft.tenantservices.tenant.model.Role 的 PersistentEntity!
我假设我在某处的配置 bean 中遗漏了一些东西,但无法找出我需要做些什么来完成这项工作。
我有一个包含模块 1 和模块 2 的父 pom。
请说我是否需要发布任何配置或其他文件。
谢谢 约翰

【问题讨论】:

    标签: spring multi-module


    【解决方案1】:

    你需要从注入的模块中扫描基础包,否则spring不会为注入的模块创建任何bean,你将面临依赖错误。

    在主应用的 SpringBootApplication 注解中使用 scanBasePackages 值(您可以根据需要扫描包数组)

    例如:

    @SpringBootApplication(scanBasePackages = "com.example.multimodule")
    

    这是基于多个示例应用程序的示例link

    ComponentScan 是另一种扫描多模块包的方法;

    @ComponentScan(value = "com.example.multimodule")
    

    还可以使用以下注释来扫描您的实体和存储库

    @EntityScan("你的实体基础包")

    @EnableJpaRepositories("你的仓库基础包")

    【讨论】:

    • 我已经尝试过@ComponentScan 并将scanBasePackages 添加到SpringBootApplication 注释以及所有相关的包名称,但仍然有相同的错误。
    • @JReynolds 使用 @EntityScan("你的实体包") @EnableJpaRepositories("你的存储库基础包")
    • 我已经尝试了这两个注释,存储库和 EntityManagerFactories 正在正确初始化,为持久性单元“tenantdb-persistence-unit”初始化了 JPA EntityManagerFactory,它在模块中2
    猜你喜欢
    • 2017-09-20
    • 2018-10-07
    • 1970-01-01
    • 2015-10-10
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2016-03-27
    相关资源
    最近更新 更多