9

我将 JPA 持久性用于我的数据模型,并将 Eclipselink 作为持久性提供者。我有一个模块化 (OSGi) 应用程序,其中一个模块包含标准数据模型和一个持久性单元,该单元自动包含包中的所有实体。持久性提供程序位于另一个模块中,该模块运行良好。

现在我想要第三个模块将一些实体添加到持久性单元。我怎么做?我找到了这个解决方案,它似乎特定于我没有使用的 Spring。该方法的总结是编写一个后处理器,它与持久性单元处理挂钩并手动合并来自文件<class>的条目。persistence.xml

是否可以合并持久性单元?有人可以提出解决方法吗?

4

2 回答 2

5

首先,这是Dynamic-JPA上的链接,它们提供了一种动态更新实体的方法。我会先探索这个选项。


这是来自 OSGi 的另一个链接 ( PDF ),其中有一些处理持久性和 EntityManagerFactory 的顶级图表可能有用。


一种有趣的方法,但可能不相关

这是一个关于在不使用 persistence.xml 文件的情况下以编程方式创建持久性单元的链接(您实际上无法做到,但答案提供了一些对问题的洞察力)。philk 提供了有关如何从 persistence.xml 文件中删除提供程序的建议。如果您遵循此方法,您可能能够将您的实体组合成一个特定的持久性单元。

“好吧,在 Hibernate 过去的美好时光里,我可以创建一个会话并即时添加我的类。似乎从未将其纳入 SUN 的 JPA 规范。但是我已经从 persistence.xml 中完全删除了提供程序并交给了它使用 EMF 的属性到 EL。这似乎工作正常。persistence.xml 中唯一剩下的就是类的规范。我想公开解析 EL 中的类名的方法和为其创建 ClassDescriptor 作为 EL JPA Provider 的公共方法。"


最后,我们来到了骇人听闻的解决方案,已经提出了建议,只需在事后编辑您的 persistence.xml 文件。我相信这会奏效(尽管我还没有尝试过),但这绝对是一种选择。

于 2009-08-06T21:16:27.213 回答
0

I have a setup where a WAR file contains the persistence.xml file. The solution already described here should be usable for JAR's, WAR's and EAR's. JPA 2.0: Adding entity classes to PersistenceUnit *from different jar* automatically

于 2014-03-26T15:17:00.557 回答