当我尝试将Web应用程序部署到Glassfish容器(包括静态外壳程序和服务器)时引发以下异常,我对此产生了真正的负责人。基本上,我有它具有以下属性的实体类:Enum不是枚举映射的有效类型
@Entity
public class Anniversary implements Serializable, Comparable<Anniversary>
{
...
@Enumerated
private AnniversaryType type;
....Rest of class
}
哪个是指被声明为枚举类如下:
public enum AnniversaryType
该方案建立无投诉Netbeans中8.0使用标准Maven项目,但是当它被部署以下异常被抛出:
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
。我很困惑!我已经看过以下两个答案: JPA and enum type和jaxws and EclipseLink refuses to use enums from lib如果这个类在一个单独的jar文件中,它们都会提供答案,但在我的情况下它不是(据我所知)。我在应用程序的其他地方遇到了另一个问题,我在那里使用它作为映射键,并且必须根据https://bugs.eclipse.org/bugs/show_bug.cgi?id=364922明确指定表和键值。
我完全难住....任何帮助将不胜感激!
我也碰到了这个问题。你的帖子让我回答(解决方案要编码......) - 谢谢!在[https://blogs.oracle.com/theaquarium/entry/jpa_and_java_se_8](https://blogs.oracle.com/theaquarium/entry/jpa_and_java_se_8),它规定:**流是不是在当前版本支持JPA(JPA 2.1 - JSR 338),因为它早于Java SE 8,但是,这显然是JPA的下一次更新一个潜在的RFE(见这里本规范RFE)。另外,一些JPA实现已经开始增加对Java 8 Streams(例如Hibernate和EclipseLink)的支持。** – fr13d 2015-08-11 13:16:05