【问题标题】:Spring failed to lazily initialize a collection - rest apiSpring无法懒惰地初始化集合-rest api
【发布时间】:2018-12-12 21:31:28
【问题描述】:

当我尝试从我的 rest api 获得响应时出现错误。错误说..

"message": "Could not write JSON: failed to lazily initialize a collection of role: pl.bmstefanski.some_package.entity.impl.GuildEntityImpl.regions, could not initialize proxy - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: pl.bmstefanski.some_package.entity.impl.GuildEntityImpl.regions, could not initialize proxy - no Session (through reference chain: java.util.Collections$UnmodifiableRandomAccessList[0]->pl.bmstefanski.some_package.entity.impl.GuildEntityImpl[\"regions\"])"

指向集合:

  @ElementCollection(targetClass = String.class)
  @Column(columnDefinition = "TEXT", nullable = false)
  private List<String> regions;

你有什么想法,为什么jackson不能把这个集合映射成json格式?

【问题讨论】:

标签: spring hibernate rest jpa


【解决方案1】:

解决了。 我只需要添加自定义转换器列表 -> 字符串,如下所示: @转换器

public class StringListConverter implements AttributeConverter<List<String>, String> {

  @Override
  public String convertToDatabaseColumn(List<String> list) {
    return String.join(",", list);  
  }

  @Override
  public List<String> convertToEntityAttribute(String joined) {
    return new ArrayList<>(Arrays.asList(joined.split(",")));
  }

}

然后用

注释我的字段
  @Convert(converter = StringListConverter.class)
  @Column(columnDefinition = "TEXT", nullable = false)
  private List<String> regions;

来源:Convert list in entity to single string column in database

【讨论】:

    【解决方案2】:

    试试看:它可能会解决这个问题,如果没有,你可以点击下面的链接,有更多的解决方案

    @ElementCollection(targetClass = String.class)

    @Column(columnDefinition = "TEXT", nullable = false)

    @JsonIgnore

    私有列表区域;

    How to persist a property of type List<String> in JPA?

    【讨论】:

    • 我不能忽略它,这是我的api的主要功能。
    • 你用过@Transactional注解
    • 我认为这不是问题的原因。但在回答您的问题时,我使用的是 spring 数据存储库,所以我不必添加 @Transactional 注释。
    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 2020-11-25
    • 1970-01-01
    • 2021-01-30
    • 2011-07-21
    • 2019-01-24
    相关资源
    最近更新 更多