我从here了解了eclipselink中动态实体创建的可能性。我尝试创建动态实体并将它们映射到静态实体,这些实体已经存在于同一个持久性单元中,如给出的示例中所述here。
我使用EntityManagerFactoryImpl的refreshMetadata(带有空属性映射)来刷新元数据。 但是动态实体没有被列入entitymanager工厂的元模型中。
有人能让我知道我哪里出错吗?
答案 0 :(得分:1)
我希望它们不会,因为Dynamic实体api为本机EclipseLink会话添加了映射,而JPA元模型是从JPA映射构建的。 refreshMetadata用于使用任何新的JPA元数据(orm.xml等)重建本机EclipseLink会话,但不会采用其他方式。
答案 1 :(得分:0)
我能够通过以下代码片段为当前会话添加新的元模型来刷新元模型:
Metamodel metamodel = new MetamodelImpl((AbstractSession) dynamicHelper.getSession());
((EntityManagerFactoryImpl) emf).setMetamodel(metamodel);
虽然这并没有解决我的主要问题,但它解决了我在这里问过的问题。