2011-06-20 23 views
1

我有一個類在保存時給出下面的異常。這令人費解,因爲我可以很好地檢索數據。即使我對已檢索的實體(進行任何更改)執行合併/更新,錯誤仍然會發生。執行合併/更新使用@ElementCollection和Enums時的Hibernate ClassCastException

ServerStatusException data: 
ASObject(26024375){message=java.lang.String cannot be cast to java.lang.Enum, 
rootCause=ASObject(9663101){message=java.lang.String cannot be cast to 
java.lang.Enum, localizedMessage=java.lang.String cannot be cast to 
java.lang.Enum, cause=null}, details=java.lang.ClassCastException, 
code=Server.Processing} HttpResponseInfo: HttpResponseInfo code: 200 message: OK 

下面是屬性定義:

@ElementCollection(targetClass=FilePrivilegeEnum.class, fetch=FetchType.EAGER) 
@JoinTable(name="edrfiletyperoleprivilegelink", joinColumns={@JoinColumn(name="file_type_role_id")}) 
@Column(name="privilege", nullable = false) 
@Enumerated(EnumType.STRING) 
private Set<FilePrivilegeEnum> privileges = new HashSet<FilePrivilegeEnum>(); 
public Set<FilePrivilegeEnum> getPrivileges() { return this.privileges; } 
public void setPrivileges (Set<FilePrivilegeEnum> privileges) { this.privileges = privileges; } 

這裏是特權階級:

public enum FilePrivilegeEnum { 
    FILE_VIEW, 
    FILE_CREATE, 
    FILE_AMEND, 
    FILE_DELETE; 
} 

回答

0

我想用下面的更換你的@ElementCollection將解決這個問題:

@ElementCollection(targetClass=java.lang.String, fetch=FetchType.EAGER) 
+0

這不會工作si nce'targetClass'旨在告知哪個Enum將用於轉換 –