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

标签 java jpa eclipselink maven-3

灵感来自这个问题: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 环境变量的存在,并转移到使用“生产”数据库的持久性单元。

    关于java - 有一个单独的persistence.xml 文件用于测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472554/

    相关文章:

    java - CXF 如何在没有 Spring 的情况下在 CXF 端口上设置 SoapVersion

    java - Android 禁用任何 onTouch

    jakarta-ee - 当容器管理的 tx EJB 提交时,如何捕获和包装 JTA 抛出的异常?

    java - 为什么我会收到错误的 unreachable 语句?

    java - 为什么在java内存模型下java.lang.Class.newInstance0()不是严格正确的?

    java - JPA 多对一关系 - 只需要保存 Id

    java - 从 QueryDSL 中的自定义表中选择

    java - JPA 事务未回滚持久调用。仅在 MySQL 上插入和提交忽略事务规则

    jaxb - 无法创建 DynamicJAXBContext - 从 GML 模式引导时出现问题

    hibernate - 如何动态设置 JPA 标准查询的位置/命名参数?