代码之家  ›  专栏  ›  技术社区  ›  user_mda

未能延迟初始化Map<Integer,String>

  •  0
  • user_mda  · 技术社区  · 6 年前

    我有以下实体

    @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 回复  |  直到 6 年前
        1
  •  0
  •   lkamal    6 年前

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