2012-07-12 38 views
2

當使用時,我看到Weblogic(10.3.3)中的一個奇怪行爲EclipseLink(2.0.2)。「不是已知的實體」來自EclipseLink的錯誤

這就是我所做的。我使用Maven編譯我使用JPA(1.0.2)的項目。在此項目中,模塊「A」取決於模塊「B」。 「B」包含一堆實體(javax.persistence.Entity)。但是「persistence.xml」在「A」中,其中「B」的所有實體都被註冊。 「B」被配置爲可選包,「A」通過它的MANIFEST指代它。

部署成功,但是當我運行應用程序並嘗試堅持一個實體時,我在「A」中得到上述錯誤。

以下其中一個操作都可以解決它:

  • 重新啓動WebLogic服務器
  • 更新模塊A的POM文件,並明確地添加一個依賴於模塊B本來這種依賴關係是不存在的,因爲在模塊類接受「對象」並將其傳遞給EntityManager(不是顯式的實體類類型)。無論如何,添加這個依賴並不會改變JAR文件的清單。它只更新JAR文件的META-INF文件夾中的「maven」目錄。我不認爲weblogic甚至關心這個文件夾。

我下載了EclipseLinks的源代碼並調試了應用程序。看來,發生的問題,因爲「描述」在收集場「org.eclipse.persistence.internal.sessions.AbstractSession」類沒有實體的描述,因此它不承認它作爲一個實體。

我認爲重新啓動服務器更新緩存。但是第二種解決方案呢?爲什麼這個工作? Weblogic已知JAR文件的META-INF目錄中的「maven」目錄嗎?

回答

0

這聽起來不錯,你的部署正確地部署了B模塊。

您使用容器管理的持久性單元或應用程序進行管理嗎?如果您正在使用應用程序管理的持久性單元,則必須在重新部署之前關閉EntityManagerFactory,否則具有舊類的舊工廠將保留。

+0

部署沒有任何錯誤。 PU由容器管理。 <?xml version =「1.0」encoding =「UTF-8」?> \t org.eclipse.persistence.jpa.PersistenceProvider \t \t XYZDS \t \t com.xxx.entities。XyzEntity \t \t \t \t \t <屬性名= 「eclipselink.logging.level」 值= 「ALL」/> \t \t \t 2012-07-12 16:42:09

相關問題