Jpa 如何合并/扩展来自不同JAR的持久性单元?
我将JPA持久性用于数据模型,Eclipselink作为持久性提供者。我有一个模块化(OSGi)应用程序,其中一个模块包含标准数据模型和一个持久化单元,该单元自动包含包中的所有实体。持久性提供程序位于另一个模块中,该模块运行良好 现在,我需要第三个模块向持久化单元添加一些实体。我该怎么做?我发现,这似乎是我不使用的Spring特有的。该方法的总结是编写一个后处理器,该后处理器钩住持久化单元处理,并手动合并Jpa 如何合并/扩展来自不同JAR的持久性单元?,jpa,eclipselink,persistence-unit,Jpa,Eclipselink,Persistence Unit,我将JPA持久性用于数据模型,Eclipselink作为持久性提供者。我有一个模块化(OSGi)应用程序,其中一个模块包含标准数据模型和一个持久化单元,该单元自动包含包中的所有实体。持久性提供程序位于另一个模块中,该模块运行良好 现在,我需要第三个模块向持久化单元添加一些实体。我该怎么做?我发现,这似乎是我不使用的Spring特有的。该方法的总结是编写一个后处理器,该后处理器钩住持久化单元处理,并手动合并persistence.xml文件中的条目 是否可以合并持久性单元?有人能提出解决方法吗?首
persistence.xml
文件中的
条目
是否可以合并持久性单元?有人能提出解决方法吗?首先,这里有一个链接,它们提供了一种动态更新实体的方法。我将首先探讨这个选项
这里是来自OSGi的另一个链接(),这里有一些顶级图,它们处理持久性和EntityManagerFactory,可能很有用
这是一种有趣的方法,但可能不相关 下面是一个不使用persistence.xml文件的链接(您不能真正使用persistence.xml文件,但答案提供了一些问题的见解)。philk建议如何从persistence.xml文件中删除提供程序。如果遵循此方法,您可能能够将您的实体组合到特定的持久性单元中 “在冬眠的好日子里,我可以创建一个会话并 在运行中添加我的课程。似乎从未进入太阳队JPA 但是,我已经完全从 并使用EMF的属性将其交给EL 似乎工作正常。persistence.xml中只剩下规范了 我想公开这个方法不会太难 它解析EL中的类名并为其创建类描述符 作为EL JPA提供者的公共方法。”
最后,我们来看看黑客解决方案,已经有人建议,只需在事后编辑persistence.xml文件即可。我相信这是可行的(尽管我还没有尝试过),但这绝对是一个选项。我有一个设置,其中WAR文件包含persistence.xml文件。这里已经描述的解决方案应该可以用于JAR、WAR和EAR 三个模块都应该放在一个.ear中吗?不,每个模块都是一个JAR,然后加载到OSGi容器中(在我的例子中是ApacheFelix)。Eclipselink要么在它自己的JAR中,要么在其中一个模块中,并扫描可见包中的persistence.xml文件。这很有效。