Java JPA EclipseLink和动态Jar文件
我有一个使用JPA的应用程序。在应用程序中,我有一个类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&
@Entity
public class Root{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
...
}
在mypersistence.xml
中,我指定了
<persistence ...>
<persistence-unit ...>
<exclude-unlisted-classes>false</exlude-unlisted-classes>
</persistence-unit>
</persistence>
假的
除此之外,我还有几个Jar文件,它们在运行时作为插件加载。这些插件可能具有扩展根类的类,这些类也是实体
加载文件可以很好地工作,但是在持久化时,我会得到一个带有消息的IllegalArgumentException
,消息是子类不是已知的实体类型
。我读到了CompositePersistenceUnits,这并不是一个真正的解决方案,因为我必须事先指定所有jar文件,这在基于插件的系统中是不可能的
我现在的问题是:
我可以动态地将Jar文件添加到复合持久性单元吗?或者我甚至可以将新实体添加到非复合的持久性单元中吗?最好将所有持久性类都放在同一个组件中,或者让每个组件都有自己的独立持久性单元
您可能希望研究EclipseLink外部元数据支持,该支持允许在运行时刷新/扩展持久化单元
您还可以使用EclipseLink会话API在运行时添加描述符或项目。您能解释一下会话API吗?或者举个简单的例子?