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