2012-01-19 2 views
0

У меня есть эта аннотацию в hibernat для списка Перечисления:Аннотирование Список Перечисления в Hibernate

@CollectionOfElements(targetElement = SomeType.class) 
@JoinTable(name = "table_name", 
    joinColumns = @JoinColumn(name = FK_NAME) 
) 
@Column(name = "someTypeCd", nullable = false) 
@LazyCollection(LazyCollectionOption.FALSE) 
@GeneratedValue(strategy=GenerationType.AUTO) 
@Enumerated(EnumType.STRING) 
private List<SomeType> someType; 

И проблемы, когда я называю поиска выполнения запроса он вернуть это:

java.lang.ClassCastException - java.lang.String cannot be cast to java.lang.Enum 

Где проблема ?

ответ

0

Измените определение @Column, чтобы включить определенные значения перечисления, например.

@Column(name="someTypeCd", nullable = false, columnDefinition="enum('VAL1', 'VAL2', 'VAL3', 'UNDEFINED')") 
4

Как я пришел сюда через поиски решения:

@Column 
@Enumerated 
@ElementCollection(targetClass = MyEnum.class) 
private List<MyEnum> values; 

сделал работу для меня. Спасибо за подсказку @ElementCollection Я не знал об этом.

Ваш вставленный снимок может привести к проблеме, что вы указываете, что ваше значение перечисления имеет тип String с @Enumerated(EnumType.String). Я рассказываю, что это приводит к исключению. Может быть, EnumType.Ordinal подходит. Я не испытываю этого. Я в порядке, не определяя ничего.

Смежные вопросы