将托管类名动态添加到EntityManagerFactory [英] Dynamically add managed class names to EntityManagerFactory

查看:27
本文介绍了将托管类名动态添加到EntityManagerFactory的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个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-Implementation来实现呢?

推荐答案

我原本在这个问题上花了很多时间,现在放弃了我最初的想法(动态添加实体类)。 因此,如果你读了这个问题,我自己的答案是,我非常确定这是不可能的。

这篇关于将托管类名动态添加到EntityManagerFactory的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆