Hibernate ClassCastException при выполнении слияния / обновления класса, который использует @ElementCollection с Enums - PullRequest
1 голос
/ 20 июня 2011

У меня есть класс, который дает исключение ниже при сохранении. Это озадачивает, потому что я могу получить данные в порядке. Ошибка по-прежнему возникает, даже если я выполняю слияние / обновление для извлеченного объекта (с внесением каких-либо изменений).

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;
}

1 Ответ

0 голосов
/ 21 февраля 2013

Я думаю, что замена вашей @ElementCollection на следующую решит проблему:

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