【问题标题】:Dynamically add managed class names to EntityManagerFactory将托管类名称动态添加到 EntityManagerFactory
【发布时间】:2019-08-28 15:54:59
【问题描述】:

假设我有一个像这样的 persistence.xml 文件:

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>entity.E1</class>
    <class>entity.E2</class>
    <class>entity.E3</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:myTestDB;create=true"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="eclipselink.logging.level" value="WARNING"/>
      <property name="eclipselink.canonicalmodel.subpackage" value="test"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

我知道我可以通过这样的代码更改 persistence.xml 文件,但只能更改属性部分:

Properties properties = new Properties();
properties.put("javax.persistence.jdbc.url", "<value>");
properties.put("eclipselink.logging.level", "<value>");
....
emf = Persistence.createEntityManagerFactory("pu", properties);

我可以通过反射获取所有实体类,但是如何以类似于我为属性所做的方式动态添加类名(示例中为 E1..E3)?

我知道 Hibernate 有 a way to do it,但我使用的是 eclipselink。 有没有办法通过 eclipselinks JPA 实现来做到这一点?

【问题讨论】:

    标签: jpa eclipselink persistence.xml


    【解决方案1】:

    我最初在这个问题/问题上花了很多时间,并放弃了我最初的想法(动态添加实体类)。 所以如果你读到这个问题,我自己的回答是,我很确定它做不到。

    【讨论】:

    • 我可以在那里找到一种非常手动的方法:stackoverflow.com/a/2892654/516188——但您必须手动描述实体(所有字段、连接...),所以它真的不实用。跨度>
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多