EclipseLink中的“不是已知实体”错误

时间:2012-07-12 00:42:31

标签: maven jpa weblogic eclipselink

使用 EclipseLink (2.0.2)时,我在 Weblogic (10.3.3)中看到了一个奇怪的行为。

这是我的工作。我使用Maven编译一个项目,我使用 JPA (1.0.2)。在此项目中,模块“A”取决于模块“B”。 “B”包含一堆实体( javax.persistence.Entity )。但“ persistence.xml ”在“A”中,其中“B”的所有实体都已注册。 “B”部署为可选包,“A”通过其MANIFEST引用。

部署成功但是当我运行应用程序并尝试保留实体时,我在“A”中收到上述错误。

以下行动之一将解决它:

  • 重新启动weblogic服务器
  • 更新模块A的POM文件并显式向模块B添加依赖项。最初这种依赖关系不存在,因为模块A中的类接受“Object”并将其传递给EntityManager(不是显式实体类类型)。无论如何,添加此依赖项不会更改JAR文件的清单。它只更新JAR文件的META-INF文件夹中的“maven”目录。我认为weblogic甚至不关心这个文件夹。

我下载了EclipseLinks的源代码并调试了应用程序。似乎问题出现是因为“ 描述符 ”集合字段在“ org.eclipse.persistence.internal.sessions.AbstractSession < / strong>“类没有实体的描述符,因此它不会将其识别为实体。

我估计重新启动缓存的服务器更新。但是第二种解决方案呢?为什么这样?在weblogic中,JAR文件的META-INF目录中的“maven”目录是什么?

1 个答案:

答案 0 :(得分:0)

您的部署正确部署B模块听起来并不合适。

您使用的是容器管理的持久性单元还是应用程序?如果您使用的是应用程序管理的持久性单元,则必须在重新部署之前关闭EntityManagerFactory,否则将保留旧类的旧工厂。