JPA EclipseLink和动态Jar文件

时间:2013-07-03 10:45:57

标签: java jpa persistence eclipselink

我有一个使用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-Files在运行时作为插件加载。这些插件可能具有扩展Root类的类,也可以是实体。

加载文件可以正常工作,但在保持不变时,我会收到IllegalArgumentException消息Subclass is not a known Entity type。我读到了关于CompositePersistenceUnits的内容,它实际上不是一个解决方案,因为我必须事先指定所有的jar文件,这对于基于插件的系统来说是不可能的。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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