當我嘗試將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