2010-04-07 84 views
1

可以使用Java類文件,其中包含運行時不存在的註釋?註解在編譯時出現,但在運行時不存在

例如:我想編寫一個帶有JPA @Embeddable註解的類,它將在編譯時出現(maven scope:「provided」)。但是如果該類在JPA應用程序之外使用,那麼annoatation定義可能在運行時不存在。

回答

0

你將不得不要麼:

  1. 交換編譯的類在運行時(包括一類無註釋)
  2. 覆蓋@Embeddable的類定義和刪除@Retention(RUNTIME)
  3. 只是防止您的JPA提供程序掃描類本身。
+0

如果我在JPA應用程序之外使用該類,總是會遇到,3.對嗎? – deamon 2010-04-07 15:05:06

0

OSGi應用程序(例如Eclipse)將忽略無法訪問的註釋,即如果您有未加載JPA api的JPA註釋,則不會得到ClassNotFoundExceptions。

0

對於這個特定的問題,我會簡單地定義XML資源中的ORM映射而不是註釋。這些映射可以放在不同的工件(JAR)中,根據您是否使用JPA將這些工件添加(或不添加到)類路徑。