2011-05-23 32 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; //添加包含枚举的包在这里