Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa jaxws和EclipseLink拒绝使用库中的枚举_Jpa_Enums_Jax Ws - Fatal编程技术网

Jpa jaxws和EclipseLink拒绝使用库中的枚举

Jpa jaxws和EclipseLink拒绝使用库中的枚举,jpa,enums,jax-ws,Jpa,Enums,Jax Ws,我有一个maven多模块项目,其中包含一个ejb、一个Web服务、一个库和一个批处理应用程序。批处理应用程序和ejb模块共享一些枚举,这些枚举位于lib模块中。当尝试从webservice方法中的库返回其中一个枚举时,它会声明EJBJAR文件中没有有效的ejb。另外,当使用@Enumerated(EnumType.STRING)在JPA实体中使用这些枚举中的另一个作为属性时,我会得到一个错误,即 “…不是枚举映射的有效类型。该属性必须定义为Java枚举。” 我只是想知道为什么以这种方式使用这些枚

我有一个maven多模块项目,其中包含一个ejb、一个Web服务、一个库和一个批处理应用程序。批处理应用程序和ejb模块共享一些枚举,这些枚举位于lib模块中。当尝试从webservice方法中的库返回其中一个枚举时,它会声明EJBJAR文件中没有有效的ejb。另外,当使用
@Enumerated(EnumType.STRING)
在JPA实体中使用这些枚举中的另一个作为属性时,我会得到一个错误,即

“…不是枚举映射的有效类型。该属性必须定义为Java枚举。”


我只是想知道为什么以这种方式使用这些枚举是一个问题?除了两次声明之外,还有什么解决办法吗?

我遇到了同样的问题,这是因为我在使用
Arquillian
进行测试,出于某种原因,我忘记了在
包覆面提取中添加包含实际
enum
的包。


因此,可能有什么东西阻止了持久性提供程序(在我的例子中是eclipselink)查看您的枚举类。这就是我打赌在你的情况下会发生的事情,因为你有多个模块。

我在做一个项目时遇到了同样的问题。我有一个公共包,其中包含持久性包无法识别的通用接口(和枚举)。结果,我得到了上述异常(即使持久性包通过导入的包与公共包有依赖关系)

我通过在持久性捆绑包的Java构建路径中包含公共捆绑包解决了这个问题:

项目->项目属性->Java构建路径/Projects;//在此处添加包含枚举的捆绑包