Java JPA EclipseLink和动态Jar文件

Java JPA EclipseLink和动态Jar文件,java,jpa,persistence,eclipselink,Java,Jpa,Persistence,Eclipselink,我有一个使用JPA的应用程序。在应用程序中,我有一个类 @Entity public class Root{ @Id @GeneratedValue(strategy=GenerationType.AUTO) private long id; ... } 在mypersistence.xml中,我指定了 <persistence ...> <persistence-unit ...> <exclude-unlisted-classes&

我有一个使用JPA的应用程序。在应用程序中,我有一个类

@Entity
public class Root{
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private long id;
  ...
}
在my
persistence.xml
中,我指定了

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

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

加载文件可以很好地工作,但是在持久化时,我会得到一个带有消息的
IllegalArgumentException
,消息是
子类不是已知的实体类型
。我读到了CompositePersistenceUnits,这并不是一个真正的解决方案,因为我必须事先指定所有jar文件,这在基于插件的系统中是不可能的

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

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

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


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

您能解释一下会话API吗?或者举个简单的例子?