无法延迟初始化Map <integer,string>的角色集合

时间:2019-01-15 18:42:56

标签: multithreading hibernate hashmap eager-loading

我有以下实体

@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 :(得分:0)

通常@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;
    }
}