是否可以找到所有可用的 EntityManager 属性?

Is it possible to find all available EntityManager properties?

我需要使用具有不同属性的多个持久性单元(在我的例子中 MySQL 和 Oracle 数据库)。在 persistence.xml 中,我定义了两个不同的 "persistence-unit" 并仅列出实体 class。

可以在 persitence.xml 中使用

设置属性

<properties> <property name="..." value="..." /> ...

我在创建 EntityManager 之前在 java class 中执行此操作,因为我必须使用不同的属性(我之前阅读过):

        EntityManagerFactory factory;
        ...
        HashMap<String, String> dbProperties = new HashMap<String, String>();
        dbProperties.put("javax.persistence.jdbc.driver", driver);
        dbProperties.put("javax.persistence.jdbc.url", url);
        dbProperties.put("javax.persistence.jdbc.user", user);
        dbProperties.put("javax.persistence.jdbc.password", password);
        dbProperties.put("eclipselink.ddl-generation", "none");
        dbProperties.put("eclipselink.ddl-generation.output-mode", "database");

        factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, dbProperties);
        EntityManager em = factory.createEntityManager();
        ...

对于 Oracle,我需要动态设置架构(如果可能),而不是在每个实体 class 的 @Table 注释中进行硬编码。而且我想我还需要设置其他属性。所以我的问题是:有没有办法找到 EntityManager 的所有可用属性?

您可以在相应的 JSR 上找到标准的 JPA 属性。对于 JPA 2.1 (JSR 338),您可以在文档的第 8.2.1.9 章中找到它们。您可以下载文档 there.

对于特定于实现的属性,您可以在所用实现的文档中找到它们。对于 EclipseLink,这似乎是您正在使用的实现,您会发现它们 there.