2011-05-23 16 views
1

我有一個帶web服務,lib和批處理應用程序的ejb的maven multimodule項目。批處理應用程序和ejb模塊共享一些枚舉,然後它們位於lib模塊中。當試圖從web服務方法中的lib中返回其中一個枚舉時,它聲明ejb jar文件中沒有有效的ejbs。另外,在使用@Enumerated(EnumType.STRING)的JPA實體中使用這些枚舉中的另一個作爲屬性時,出現錯誤說明jaxws和EclipseLink拒絕使用庫中的枚舉

「...不是枚舉映射的有效類型。必須將該屬性定義爲Java枚舉。 「

我只是想知道爲什麼以這種方式使用這些枚舉是一個問題?除了聲明兩次之外,是否還有其他解決方法?

回答

0

我碰到了同樣的問題,那是因爲我與Arquillian測試出於某種原因,我忘了添加包含在shrinkwrap.

實際enum包因此,也許有一些預防持久性提供者(在我的情況下爲eclipselink)看不到你的枚舉類。這就是我敢打賭發生在你的情況,因爲你有多個模塊。

0

我和我正在做的項目有同樣的問題。我有一個通用包,它包含持久性包無法識別的常規接口(和枚舉)。因此,我得到了上述異常(即使持久性包通過導入的包具有對常見包的依賴關係)。

我通過在持久性包的Java構建路徑中包含公共包來解決此問題:

項目 - >項目屬性 - > Java構建路徑/ Projects; //添加包含枚舉的包在這裏