我是EclipseLink的新手。我试图在运行时为类生成orm映射并进行映射。 有可能吗? 我看到在运行时生成类但不适合我的情况的示例。 感谢
答案 0 :(得分: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