我的實體對象分散在多個罐子中。
在jar中我有一個基類名MyBase,它用@MappedSuperclass註解。
在jar B中有一個派生自MyBase的實體類。
問題是因爲編織是在jar文件的上下文中完成的(我正在使用maven插件),所以基類(MyBase)沒有插裝(儘管它應該)。
如果我將派生類從jar B移動到A,那麼編織過程也將處理基礎。
由於我正在開發一個大型項目,因此以模塊化方式進行開發至關重要。
EclipseLink是否支持這種方法?@MappedSuperclass使用EclipseLink和多個罐子進行靜態編織
回答
我發現重寫這個限制的唯一方法是向定義@MappedSuperclass基類的jar中添加一個臨時實體類,並在編織過程之後將其刪除。
傷心,但真正;-)
我對maven插件沒有把握,但是你應該可以在兩個罐子上使用靜態編織器,你需要調用它兩次來編織兩者,並且需要兩個編織器類路徑上的罐子調用。
問題是,第二個jar依賴於第一個,所以我需要在第二個可以構建之前構建第一個jar。這意味着將編織過程從與我無關的構建過程中移出。不過謝謝。 –
另外,您可以指定JAR包含您的超類INPATH - 作爲解釋here和here:
管理多個項目
大廈AspectJ的源代碼需要兩個不同的階段;編譯 .java和.aj文件中的源以生成.class文件,然後 將這些方面應用於生成的.class文件。第二階段 稱爲編織,是AspectJ和Java編譯器之間的主要區別。 Java編譯過程由類路徑 設置控制,該設置使編譯器可以解析類型。 AspectJ編譯過程 使用相同的類路徑設置,它在Eclipse中的配置方式完全相同。但是,在所有情況下,此設置不足以控制編譯和編織步驟 。這就是爲什麼有兩個額外的設置 可用於AspectJ項目。
首先,有inpath設置。此處指定的任何內容將爲編織者可用的 ,因此適用的任何方面將編織爲 。通過在項目上右鍵單擊 ,選擇屬性,然後轉到AspectJ InPath ,可以將項添加到項目的入口路徑中部分。條目可以是JAR文件或目錄( 文件夾),例如另一個項目的bin目錄。任何在 上的inpath都會被髮送到項目的輸出,在潛在地被 與方面編織在一起。
第二個附加設置是縱向路徑。儘管inpath 控制着編織事物的列表,但縱橫比控制 編織到列表中的是什麼。換句話說,縱向路徑上的 上指定的任何方面都可用於織造過程,就好像它們在項目中以源代碼形式存在一樣。此設置是從AspectJ Aspect Path屬性頁面控制的 ,可以包含 JAR文件或目錄。
輸出JAR設置也存在於每個 項目屬性頁面的AspectJ部分。此設置會使編譯器將 類文件直接輸出到JAR文件,而不是輸出到項目的輸出 文件夾。
像你一樣讓我瘋狂 - 希望這會有所幫助。 ;)
感謝您的答案,但正如我在另一個答案寫的問題是,第二個罐取決於在第一個,所以我需要第一個建成之前,第二個可以建成。這意味着將編織過程從與我無關的構建過程中移出。 –
- 1. 使用Eclipse WTP對EclipseLink進行靜態編織
- 2. 使用EclipseLink靜態編織在Netbeans中進行調試
- 3. 啓用JPA靜態編織(eclipselink)
- 4. Eclipselink靜態編織不起作用
- 5. EclipseLink與Intellij的靜態編織
- 6. EclipseLink @MappedSuperclass和泛型
- 7. 如何從Gradle啓用Eclipselink的靜態編織
- 8. 如何使用EclipseLink和Spring配置動態編織?
- 9. 如何使用Maven在遠程persistence.xml中啓用eclipseLink中的靜態編織?
- 10. @SpringBootTest干擾EclipseLink動態編織
- 11. 將相同方面編織成多個罐子
- 12. 實體不編織。 Eclipselink 2.1 +動態編織
- 13. Eclipselink在Apache Felix下使用(動態)字節碼編織?
- 14. 用多個罐子執行執行
- 15. 思考和多個罐子
- 16. 多個@MappedSuperclass
- 17. 爲什麼Spring AOP不在運行時編織外部罐子?
- 18. Can WeavingURLClassLoader只能編織本地罐子的各個方面嗎?
- 19. 進口,罐子和心Ache
- 20. 如何爲eclipselink配置dyanmic編織
- 21. Qt - 4.7.3 - 如何進行靜態編譯
- 22. 構建多個EAR罐子
- 23. 使用OneToMany進行查詢 - openJPA vs EclipseLink
- 24. 使用EclipseLink對Oracle進行審計JPA
- 25. Java錯誤:不能使用多種方法在單個類中對非靜態方法進行靜態引用
- 26. 靜態會話類和多個用戶
- 27. 使用PHP中的靜態屬性和方法進行OOP編程的示例
- 28. 使用JPA,EclipseLink,JSF和動態報告
- 29. 運行位於在一個罐子裏是另一個罐子
- 30. java.util.MissingResourceException運行一個罐子
是的,虛擬實體工作正常。然而,我爲此創建了錯誤報告,您可能想投票:bugs.eclipse.org/bugs/show_bug.cgi?id=466271 – virgo47