не удалось лениво инициализировать коллекцию ролей для карты <Integer, String> - PullRequest
0 голосов
/ 15 января 2019

У меня есть следующая сущность

@Entity
@Table(name = "Parent")
public class Parent  {

@ElementCollecion(fetch = FetchType.Eager)
Map<Integer,String> myMap;

public Map<Integer,String> getMyMap() {
return this.myMap;
 }
}

Тогда где-то в коде у меня есть следующее

parent.getMyMap().get(someKey);

Эта строка последовательно генерирует исключение LazyInitialization. Я установил fetchType для быстрой загрузки коллекции, чтобы значения были доступны в любое время. Что я пропустил> Это из-за доступа к вызову getMap.GetKey?

Я не вижу больше информации ни в журналах отладки, ни где-либо еще.

1 Ответ

0 голосов
/ 17 января 2019

Обычно @ElementCollection сопровождается таблицей @CollectionTable вместе с аннотацией @MapKeyColumn & @Column для предоставления таблицы и значений для загрузки содержимого для карты.

@Entity
@Table(name = "Parent")
public class Parent {

    @ElementCollection(fetch = FetchType.Eager)
    @CollectionTable(name="example_attributes", joinColumns=@JoinColumn(name="example_id"))    
    @MapKeyColumn(name="name")
    @Column(name="value")
    Map<Integer,String> myMap;

    public Map<Integer,String> getMyMap() {
        return this.myMap;
    }
}
...