【问题标题】:assign entity to persistence-unit (spring-boot, spring-data-jpa)将实体分配给持久性单元(spring-boot,spring-data-jpa)
【发布时间】:2020-04-15 15:03:12
【问题描述】:

我需要支持两个数据库连接。由于遗留原因,必须可以在外部文件中配置,哪个数据库包含哪个表。

使用 JEE,我会有一个像这样的持久性单元

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="unit-one">
        <class>com.example.io.jpa.Vpt</class>
        <class>com.example.io.jpa.Azg</class>
        <class>com.example.io.jpa.Aus</class>
        <class>com.example.io.jpa.Txt</class>
        <class>com.example.io.jpa.Aco</class>
        <class>com.example.io.jpa.Aks</class>
        <class>com.example.io.jpa.Apr</class>
        <class>com.example.io.jpa.Aie</class>
    </persistence-unit>

    <persistence-unit name="unit-two">
        <class>com.example.io.jpa.Vif</class>
        <class>com.example.io.jpa.Vid</class>
    </persistence-unit>

</persistence>

实体可以根据需要在持久性单元之间重新排列。

我知道数据源参数,并且我有一个必须分配给第二单元的实体列表。其他一切都归于unit-one。

到目前为止,我还没有在 Spring Boot 中找到将 Entity.class 分配给 LocalContainerEntityManagerFactoryBean,我发现的一切都是基于包的。 如果没有其他方法,我会将所有实体放在一个单独的包中,但通常我看不到一个不那么丑陋的解决方案。

【问题讨论】:

    标签: spring-boot spring-data-jpa


    【解决方案1】:

    我发现有人遇到类似问题。他描述的解决方案也适用于我。 它仍然很难看,因为我不得不从 spring 复制/复制几个类。 所以选择的方式不是有意的。

    在运行时分配Entities的方式是:

     @Bean(name = "someEntityManagerFactory")
      public LocalContainerEntityManagerFactoryBean someEntityManagerFactory(
              EntityManagerFactoryBuilder builder) {
          return builder
                  .dataSource(tradingDataSource())
                  .packages("com.example.db.model.pkgtable1",
                      "com.example.db.model.pkgtable2",
                      "com.example.db.model.pkgtable3"
                      )
                  .build();
      }
    

    仍然需要在它自己的包中的每个实体。

    但实际上这只是一半。我们对存储库有同样的问题。 如何解决这个问题,可以在这里找到:

    Spring Data JPA - How to programmatically set JpaRepository base packages

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-20
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2011-09-22
      相关资源
      最近更新 更多