有一个单独的 persistence.xml 文件用于测试

Pla*_*aul 5 java jpa eclipselink maven-3

受到这个问题的启发:JPA使用替代的“persistence.xml”我创建了一个文件夹结构,如下所示:

  • src/main/resources/META-INF/persistence.xml
  • src/test/resources/META-INF/persistence.xml

两者persistence-units具有相同的名称,因为我的目标是测试应选择 中的名称test-folder,否则normal应使用“ ”名称。上述问题的答案声称“Maven 将测试类/资源放在类路径中的主类/资源之前”但这不是我所看到的。如果persistence-units有相同的名称,它将始终使用其中的那个src/main/resources/具有相同的名称,它将始终使用...

任何有关如何解决此问题的建议将不胜感激

Pla*_*aul 1

那么原来引用的问题的回答似乎是错误的?因此,我最终采用了如下所示的另一个策略:我有一个静态类,它始终用于获取要使用的持久性单元的名称。

public class PU_Name
{
  private static String puName = "pu_delopment";

  public static String getPU_Name(){
    return puName;
  }
  public static void setPU_Name(String name){
    puName = name;
  }
}
Run Code Online (Sandbox Code Playgroud)

每当我创建 EntityManager 时,我都会按照下面的方式进行操作。在此示例中,它更改名称以使用“测试持久性单元”

@BeforeClass
public static void initClass(){
  PU_Name.setPU_Name("puTest");
  emf = Persistence.createEntityManagerFactory(PU.getPU_Name());
}
Run Code Online (Sandbox Code Playgroud)

真正的类更“高级”一些,因为它还检测 OPENSHIFT 环境变量的存在,并转移到使用“生产”数据库的持久性单元。