Аннотирующий список перечислений в Hibernate - PullRequest
0 голосов
/ 20 января 2012

У меня есть эта аннотация в hibernat для списка Enums:

@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

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

Ответы [ 2 ]

4 голосов
/ 24 июля 2014

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

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

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

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

0 голосов
/ 18 февраля 2012

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

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