0

我有一个使用 JPA 的应用程序。在应用程序中我有一堂课

@Entity
public class Root{
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long id;
  ...
}

在我persistence.xml指定的

<persistence ...>
  <persistence-unit ...>
    <exclude-unlisted-classes>false</exlude-unlisted-classes>
  </persistence-unit>
</persistence>

除此之外,我还有几个 Jar 文件,它们在运行时作为插件加载。这些插件可能有扩展类的Root类,它们也是实体。

加载文件工作正常,但在坚持我得到一个IllegalArgumentException消息Subclass is not a known Entity type。我读到了 CompositePersistenceUnits,这并不是一个真正的解决方案,因为我必须事先指定所有的 jar 文件,这对于基于插件的系统来说是不可能的。

我现在的问题是:我可以动态地将 Jar-Files 添加到复合持久性单元吗?或者我什至可以将新实体添加到非复合的持久性单元中吗?

4

1 回答 1

1

最好将所有持久类都放在同一个组件中,或者让每个组件都有自己独立的持久单元。

您可能希望研究允许在运行时刷新/扩展持久性单元的 EclipseLink 外部元数据支持,

http://www.eclipse.org/eclipselink/documentation/2.5/solutions/metadatasource.htm

您还可以使用 EclipseLink Session API 在运行时添加描述符或项目。

于 2013-07-03T12:51:58.027 回答