2

我是 EclipseLink 的新手。我正在尝试在运行时为类生成 orm 映射并进行映射。有可能吗?我看到了在运行时生成类的示例,但这不适合我的情况。谢谢

4

1 回答 1

1

这可能是可能的,具体取决于您尝试做什么以及何时。持久性单元是相当静态的创建,应该预先知道 - 就像 java 类本身一样。因此,如果您不使用动态实体,为什么不预先知道该类应该预先与持久性单元分开呢?

虽然这不是一个好主意,但您可以创建一个静态持久性单元并指定它使用定制器,如此处所述http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Customizers您可以添加其中描述符或映射到持久性单元。定制器只运行一次,在初始化期间。因此,如果您想稍后进行更改,则需要使用 EntityManagerFactory 上的 refreshMetadata 刷新持久性单元,以使其重新加载持久性单元。运行 EntityManagers 不会受到更改的影响。

使用 EMF refreshMetadata,您还可以使用 MetadataRepository 为您的实体获取不同的或扩展的 ORM.xml 文件 - 这样您就可以合并对 xml 所做的更改,而不是使用定制器。这在这里有所描述:http: //www.eclipse.org/eclipselink/documentation/2.5/solutions/extensible001.htm#CIAIJHAG

于 2013-04-12T18:28:17.533 回答