JPA [Eclipselink] - 如何刷新创建的动态实体的元数据?

时间:2016-03-15 06:06:10

标签: java jpa dynamic eclipselink

我从here了解了eclipselink中动态实体创建的可能性。我尝试创建动态实体并将它们映射到静态实体,这些实体已经存在于同一个持久性单元中,如给出的示例中所述here

我使用EntityManagerFactoryImpl的refreshMetadata(带有空属性映射)来刷新元数据。 但是动态实体没有被列入entitymanager工厂的元模型中。

有人能让我知道我哪里出错吗?

2 个答案:

答案 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);

虽然这并没有解决我的主要问题,但它解决了我在这里问过的问题。