EclipseLink中的枚举类型转换,元素集合问题

时间:2013-12-24 10:09:23

标签: java jpa eclipselink

我已经发现eclipseLink 2.5已修复java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum问题。 但是,我使用eclipseLink 2.5,我仍然遇到以下问题:

Student.java

@Entity
public class Student implements Serializable {
    @Id
    private String id;
    private String name;

    @ElementCollection
    @CollectionTable(name = "STUDENT_TYPE_LINK", joinColumns=@JoinColumn(name="STUDENT_ID"))
    @Enumerated(EnumType.STRING)
    @Column(name = "STUDENT_TYPE")
    private List<StudentType> studentTypeList;

    ....
}   

堆栈跟踪

Caused by: javax.faces.el.EvaluationException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) [jboss-jsf-api_2.1_spec-2.0.5.Final.jar:2.0.5.Final]
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) [jsf-impl-2.1.7-jbossorg-2.jar:]
    ... 38 more
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
    at org.eclipse.persistence.mappings.converters.EnumTypeConverter.convertObjectValueToDataValue(EnumTypeConverter.java:160) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.mappings.DirectCollectionMapping.postInsert(DirectCollectionMapping.java:2218) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.descriptors.DescriptorQueryManager.postInsert(DescriptorQueryManager.java:999) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:494) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:300) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b
]
    at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:798) [eclipselink-2.5.0.jar:2.5.0.v20130507-3faac2b]
    at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108) [eclipselink-2.5.0.jar:2.5.0.v20130507-

我在这里下载这个jar文件

http://repo1.maven.org/maven2/org/eclipse/persistence/eclipselink/2.5.0/eclipselink-2.5.0.jar

0 个答案:

没有答案