LINUX.ORG.RU

Hibernate + List<Enum>

 ,


0

1

Есть простое перечисление:

public enum E { V1, V2, V3; }

Есть сущность, в которой есть атрибут типа List<E>, который надо сохранять в БД:

class C {
...
    List<E> enums;
...
    @ElementCollection
    @Enumerated(EnumType.STRING)
    public List<E> getEnums() {
        return enums;
    }
...
}

При попытке вызвать saveOrUpdate в сессии Hibernate возникает исключение: org.hibernate.MappingException: Unknown entity: <...> E

Как правильно определять коллекции перечислимых типов?

Hibernate 4.1.8

★★★

Последнее исправление: ovk48 (всего исправлений: 1)
Ответ на: комментарий от TheKnight

Я что-то подобное уже пробовал до этого. Попробовал и так, как там пишут, получил org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: C, for columns: [org.hibernate.mapping.Column(enums)] :(

ovk48 ★★★
() автор топика
Последнее исправление: ovk48 (всего исправлений: 1)
Ответ на: комментарий от vtVitus

Да я половину SO перерыл перед тем как сюда написать :) Делал и так тоже, все равно тот же эксепшен - org.hibernate.MappingException: Unknown entity . Не пойму, что я делаю не так. Попозже попробую выделить этот кусок из общего кода в отдельный проект, посмотрю, что будет.

ovk48 ★★★
() автор топика
Ответ на: комментарий от ovk48

Делал и так тоже, все равно тот же эксепшен - org.hibernate.MappingException: Unknown entity

Может ты забываешь сделать что-то вроде

configuration.addAnnotatedClass(Person.class);
?

korvin_ ★★★★★
()
Ответ на: комментарий от ovk48

Ты пытаешься персистнуть список ентитей, которые не ентити. Попробуй сделать класс-обертку над enum, который будет проксировать твой enum в бин, типа getEnum/setEnum, либо сделай

private transient List<E> enums;

@ElementCollection
private List<String> fakeEnums;

public List<E> getEnums() {
    return Utils.convertToEnums(fakeEnums);
}

public void setEnums(List<E> enums) {
    this.fakeEnums = Utils.convertFromEnums(enums);
}

... get/set for fakeEnums;

Как-то так.

lester_dev ★★★★★
()
Последнее исправление: lester_dev (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.