【问题标题】:Spring Data JPA having multiple orm.xml files具有多个 orm.xml 文件的 Spring Data JPA
【发布时间】:2020-09-26 08:21:37
【问题描述】:

根据我的上一篇文章:Spring JPA long SQL String for NativeQuery

我已经设法找到了一个“地方”来编写干净的 SQL,这样我就可以直接将其复制并粘贴到数据库软件中以加快测试速度。

但是另一个问题来了,如果我想分离我的 orm.xml 文件,说:

  1. student_orm.xml
  2. teacher_orm.xml

我尝试重命名文件,如上所示,但它说在启动期间找不到文件中的方法。知道如何让项目理解多个 orm.xml 文件吗?

【问题讨论】:

    标签: spring spring-boot orm spring-data-jpa nativequery


    【解决方案1】:

    可能您已经找到了解决方案,但仍然在此处发布我的解决方案,以防其他人仍在为此苦苦挣扎。

    在使用 Spring JPA 和 Spring Boot 时,您可能熟悉我们配置数据源的方式。因此,在配置实体管理器工厂时,将映射资源设置为您拥有的(一组)ORM 文件,如下所示。这将覆盖 Spring Boot 为您执行的默认“META-INF/orm.xml”。

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    
        // ..
        // other configurations removed for brevity
        // ..
    
        factory.setMappingResources("META-INF/orm/student_orm.xml", "META-INF/orm/teacher_orm.xml");
    
        return factory;
    }
    

    【讨论】:

      【解决方案2】:

      是的,可以在同一个应用程序上拥有多个 orm.xml 文件。但请记住,您需要在 persistence.xml 中使用 <mapping-file>..</mapping-file> 标签引用它们。

      在您的情况下,假设这些 orm.xml 文件位于 META-INF/orm 文件夹下,您的 persistence.xml 将具有以下映射:

      <mapping-file>META-INF/orm/student_orm.xml</mapping-file>
      <mapping-file>META-INF/orm/teacher_orm.xml</mapping-file>
      

      【讨论】:

      • 你有没有数据源配置的 persistence.xml 的完整配置示例?因为从我在网上看到的样本来看,它需要这个。而且,我的项目能够在没有 persistence.xml 的情况下运行,而且它在技术上不需要数据源
      猜你喜欢
      • 2021-04-20
      • 2014-12-06
      • 2016-05-03
      • 2013-11-19
      • 2020-02-02
      • 2018-01-21
      • 2014-04-17
      • 2018-01-27
      相关资源
      最近更新 更多