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

标签 jpa eclipselink persistence-unit

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

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

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

最佳答案

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

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

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

这是 creating persistence units programmaticly 上的链接不使用persistence.xml 文件(你不能真正做到,但答案提供了对问题的一些见解)。 philk 提供了有关如何从 persistence.xml 文件中删除提供程序的建议。如果您遵循此方法,您可能能够将您的实体组合成一个特定的持久性单元。

“好吧,在 Hibernate 过去的美好时光里,我可以创建一个 session 并
即时将我的类(class)添加到其中。似乎从未进入 SUNs JPA
眼镜。但是我已经从
persistence.xml 并使用 EMF 的属性将其交给 EL。这
似乎工作正常。 persistence.xml 中唯一剩下的就是规范
的类。我想暴露方法不会太难
解析 EL 中的类名并为其创建 ClassDescriptor
作为 EL JPA Provider 的公共(public)方法。 "

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

关于jpa - 如何合并/扩展来自不同 JAR 的持久性单元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211777/

相关文章:

jpa - querydsl 将多个查询合二为一

orm - 使用 JPQL 限制子查询

java - EclipseLink @MappedSuperclass 和泛型

java - 实体未编织。 Eclipselink 2.1 + 动态编织

hibernate - 多个 JPA 持久性单元指向同一个数据库?

java - Spring In CorrectResultSizeDataAccessException 查询返回 Long 值? java

java - 无法从 JPA 实体在 MySql 中生成枚举类型

java - 无法预部署处于无效状态的 PersistenceUnit [PU] [DeployFailed]

java - Hibernate SchemaExport 和持久化单元

java - 如何将实体绑定(bind)到特定的持久性单元