Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 如何合并/扩展来自不同JAR的持久性单元?_Jpa_Eclipselink_Persistence Unit - Fatal编程技术网

Jpa 如何合并/扩展来自不同JAR的持久性单元?

Jpa 如何合并/扩展来自不同JAR的持久性单元?,jpa,eclipselink,persistence-unit,Jpa,Eclipselink,Persistence Unit,我将JPA持久性用于数据模型,Eclipselink作为持久性提供者。我有一个模块化(OSGi)应用程序,其中一个模块包含标准数据模型和一个持久化单元,该单元自动包含包中的所有实体。持久性提供程序位于另一个模块中,该模块运行良好 现在,我需要第三个模块向持久化单元添加一些实体。我该怎么做?我发现,这似乎是我不使用的Spring特有的。该方法的总结是编写一个后处理器,该后处理器钩住持久化单元处理,并手动合并persistence.xml文件中的条目 是否可以合并持久性单元?有人能提出解决方法吗?首

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

现在,我需要第三个模块向持久化单元添加一些实体。我该怎么做?我发现,这似乎是我不使用的Spring特有的。该方法的总结是编写一个后处理器,该后处理器钩住持久化单元处理,并手动合并
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文件。这很有效。