首页 > 解决方案 > 在两个不同的持久化单元中使用相同的实体

问题描述

我有两个数据库(dababase_sales_1 和 dababase_sales_2)与同一个表“销售”我创建了实体“销售”(com.model.Sales)

然后是 2 个持久性单元:

 <persistence-unit name="sales_1_PU" transaction-type="RESOURCE_LOCAL">
   <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.model.Sales</class>
    <class>com.model.SalesPK</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <shared-cache-mode>NONE</shared-cache-mode>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/dababase_sales_1"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="myuser"/>
      <property name="javax.persistence.jdbc.password" value="mypasswrod"/>
      <property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
      <property name="eclipselink.jdbc.batch-writing.size" value="1000"/>
      <property name="eclipselink.jdbc.cache-statements" value="false"/>
      <property name="eclipselink.cache.shared.default" value="false"/>
      <property name="eclipselink.logging.level" value="OFF" />
    </properties>
  </persistence-unit>

  <persistence-unit name="sales_2_PU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.model.Sales</class>
    <class>com.model.SalesPK</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <shared-cache-mode>NONE</shared-cache-mode>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/dababase_sales_2"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="myuser"/>
      <property name="javax.persistence.jdbc.password" value="mypasswrod"/>
      <property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
      <property name="eclipselink.jdbc.batch-writing.size" value="1000"/>
      <property name="eclipselink.jdbc.cache-statements" value="false"/>
      <property name="eclipselink.cache.shared.default" value="false"/>
      <property name="eclipselink.logging.level" value="OFF" />
    </properties>
  </persistence-unit>

这是我的 POM

 <build>
    <plugins>
      
     
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>install</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>${mainClass}</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      
      
    </plugins>
  </build>

但是当我用 maven 编译时,我得到了这个错误:

无法在项目 MyProject 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile):致命错误编译:java.lang.RuntimeException:javax.annotation.processing.FilerException:尝试重新创建 com.model.SalesPK_ 类型的文件-> [帮助 1]

我试图删除

<exclude-unlisted-classes>true</exclude-unlisted-classes> 

但什么都没有……我不明白原因……

标签: javajpapersistence

解决方案


推荐阅读