EclipseLink、EntityManager 需要两个持久性单元

amo*_*fis 3 jpa entitymanager eclipselink

我有一个 jar 库 A(或 eclipse 中的项目),它有自己的持久性单元(META-INF/persistence.xml)和一些实体类,以及使用该库的另一个项目(B)。在项目 B 中还有持久化单元和实体类。

在项目 BI 中,需要使用项目 A 和 B 中的两个实体类。但是,如果我将“A”设置为持久性单元名称,则 EntityManager 无法创建命名查询(如果该查询位于项目 B 的实体中)。如果我将“B”设置为持久性,则 EntityManager 无法创建命名查询。单位名称,它无法从项目 A 的实体创建命名查询。错误消息是:

NamedQuery of name: MyEntityName.myQueryName not found.
Run Code Online (Sandbox Code Playgroud)

持久性单元可以以某种方式包含其他持久性单元吗?或者还有其他方法可以解决这个问题吗?

cod*_*ner 5

EclipseLink 2.3 引入了复合持久性单元,它允许您创建一个持久性单元,该单元本质上仅充当两个或多个实际持久性单元的容器。然后,您就可以在应用程序中使用这一单一复合持久性单元,就好像您只有一个持久性单元一样。这应该可以满足您保持 persistence.xml 文件干净以便轻松将模型同步到数据库的目标。非常酷的东西。