是否可以在META-INF以外的位置使用persistence.xml?

Evg*_*eev 11 java jpa persistence.xml

我想在我的应用程序的conf文件夹中有我的persistence.xml.我如何告诉Persistence.createEntityManagerFactory它应该从那里读取它?

Jam*_*mes 13

如果您使用的是EclipseLink,则可以使用持久性单元属性"eclipselink.persistencexml"设置persistence.xml位置.

properties.put("eclipselink.persistencexml", "/org/acme/acme-persistence.xml");
EntityManagerFactory factory = Persistence.createEntityManagerFactory("acme", properties);
Run Code Online (Sandbox Code Playgroud)


Evg*_*eev 6

这个解决方案对我有用

    Thread.currentThread().setContextClassLoader(new ClassLoader() {
        @Override
        public Enumeration<URL> getResources(String name) throws IOException {
            if (name.equals("META-INF/persistence.xml")) {
                return Collections.enumeration(Arrays.asList(new File("conf/persistence.xml")
                        .toURI().toURL()));
            }
            return super.getResources(name);
        }
    });
    Persistence.createEntityManagerFactory("test");
Run Code Online (Sandbox Code Playgroud)


小智 2

createEntityManagerFactory 方法在任何 CLASSPATH 元素的 META-INF 目录中搜索 persistence.xml 文件。如果您的 CLASSPATH 包含 conf 目录,您可以将 EntityManagerFactory 定义放在 conf/META-INF/persistence.xml 中