枚举不是枚举映射的有效类型

Jam*_*ton 4 java jpa maven

当我尝试将我的 web 应用程序部署到 Glassfish 容器(静态 shell 和服务器)时,我对以下异常感到非常头疼。基本上,我有一个实体类,它具有以下属性:

    @Entity
    public class Anniversary implements Serializable, Comparable<Anniversary>
    {
     ...

        @Enumerated
        private AnniversaryType type;

     ....Rest of class
     }
Run Code Online (Sandbox Code Playgroud)

它指的是一个枚举类,声明如下:

 public enum AnniversaryType
Run Code Online (Sandbox Code Playgroud)

该程序使用标准 Maven 项目在 Netbeans 8.0 中构建时没有任何抱怨,但在部署时会引发以下异常:

Caused by: Exception [EclipseLink-7151] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd):         org.eclipse.persistence.exceptions.ValidationException
Exception Description: The type [class com.mycompany.anniversaries_final.AnniversaryType] for the   attribute [type] on the entity class [class com.mycompany.anniversaries_final.Anniversary] is not a     valid type for an enumerated mapping. The attribute must be defined as a Java enum.
at org.eclipse.persistence.exceptions.ValidationException.invalidTypeForEnumeratedAttribute(ValidationException.java:1125)
at org.eclipse.persistence.internal.jpa.metadata.converters.EnumeratedMetadata.process(EnumeratedMetadata.java:115)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.MappingAccessor.processEnumerated(MappingAccessor.java:1684)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.BasicAccessor.processEnumerated(BasicAccessor.java:467)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.MappingAccessor.processMappingConverter(MappingAccessor.java:1769)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.MappingAccessor.processMappingValueConverter(MappingAccessor.java:1796)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.BasicAccessor.process(BasicAccessor.java:419)
at org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processMappingAccessors(MetadataDescriptor.java:1536)
at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processMappingAccessors(ClassAccessor.java:1648)
at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processMappingAccessors(EntityAccessor.java:1234)
at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:697)
at org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage2(MetadataProject.java:1793)
at org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:576)
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:585)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1869)
... 64 more
Run Code Online (Sandbox Code Playgroud)

. 我很困惑!我已经查看了以下两个答案: JPA 和枚举类型以及jaxws 和 EclipseLink 拒绝使用 lib 中的枚举,如果类位于单独的 jar 文件中,它们都提供了答案,但在我的情况下不是(就我而言)我知道)。我确实在应用程序的其他地方遇到了这个枚举的另一个问题,我将它用作映射键,并且必须按照https://bugs.eclipse.org/bugs/show_bug.cgi?id明确命名表和键值=364922

我完全被难住了......任何帮助将不胜感激!

Jam*_*ton 6

固定的!该问题是由枚举类中的以下行引起的:

return Arrays.asList(values()).stream().filter(type -> {
          return type.isCultural();
       }).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

一般而言,我似乎在实体类中使用流时遇到问题;当我使用它们时,它们似乎会导致各种明显无关的异常。我已经向 Glassfish 提交了一份错误报告,并等待他们的回应......