受到这个问题的启发:JPA using alternative "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/
...任何有关如何解决此问题的建议将不胜感激
最佳答案
所以似乎对原始引用问题的回复是错误的?所以我最终采用了另一种策略,如下所示:
我有一个静态类,它总是用于获取要使用的持久性单元的名称。
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;
}
}
每当我创建 EntityManager 时,我都会按照下面的草图进行操作。在此示例中,它更改名称以使用“测试持久性单元”
@BeforeClass
public static void initClass(){
PU_Name.setPU_Name("puTest");
emf = Persistence.createEntityManagerFactory(PU.getPU_Name());
}
真正的类更“高级”,因为它还检测 OPENSHIFT 环境变量的存在,并转移到使用“生产”数据库的持久性单元。