我有一个maven多模块项目,其中包含一个带有web服务,lib和批处理应用程序的ejb。批处理应用程序和ejb模块共享一些枚举,然后这些枚举位于lib模块中。当尝试从web服务方法中的lib返回其中一个枚举时,它声称ejb jar文件中没有有效的ejbs。此外,当使用@Enumerated(EnumType.STRING)
在JPA实体中使用这些枚举中的另一个作为属性时,我收到错误消息
“...不是枚举映射的有效类型。必须将该属性定义为Java枚举。”
我只是想知道为什么以这种方式使用这些枚举是一个问题?除了宣布两次之外,还有其他解决方法吗?
答案 0 :(得分:0)
我遇到了同样的问题,因为我正在使用Arquillian
进行测试,出于某种原因,我忘记在enum
<中添加包含实际shrinkwrap.
的包/ p>
所以也许有些东西会阻止持久性提供程序(在我的情况下为eclipselink
)看到你的枚举类。这就是我打赌你的情况,因为你有多个模块。
答案 1 :(得分:0)
我正在处理的项目遇到了同样的问题。我有一个公共包,它包含持久性包无法识别的通用接口(和枚举)。因此,我得到了上述异常(即使持久性捆绑包通过导入的包依赖于公共捆绑包。
我通过将公共包包含在持久性包的Java构建路径中来解决了这个问题:
项目 - &gt;项目属性 - &gt; Java构建路径/ Projects; //添加包含此处枚举的包