Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring未能延迟初始化集合-rest api_Spring_Hibernate_Rest_Jpa - Fatal编程技术网

Spring未能延迟初始化集合-rest api

Spring未能延迟初始化集合-rest api,spring,hibernate,rest,jpa,Spring,Hibernate,Rest,Jpa,尝试从RESTAPI获取响应时出错。错误是 "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.jack

尝试从RESTAPI获取响应时出错。错误是

"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;
@ElementCollection(targetClass=String.class)
@列(columnDefinition=“TEXT”,null=false)
私人名单区域;

你知道为什么jackson不能将这个集合映射到json格式吗?

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

@ElementCollection(targetClass=String.class)

@列(columnDefinition=“TEXT”,null=false)

@杰索尼奥雷

私人名单区域

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

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(",")));
  }

}
公共类StringListConverter实现AttributeConverter{
@凌驾
公共字符串convertToDatabaseColumn(列表){
返回字符串。join(“,”列表);
}
@凌驾
公共列表convertToEntityAttribute(字符串连接){
返回新的ArrayList(Arrays.asList(joined.split(“,”));
}
}
然后用

  @Convert(converter = StringListConverter.class)
  @Column(columnDefinition = "TEXT", nullable = false)
  private List<String> regions;
@Convert(converter=StringListConverter.class)
@列(columnDefinition=“TEXT”,null=false)
私人名单区域;

来源:

我不能忽略它,这是我api的主要功能。您是否使用了@Transactional Annotation?我认为这不是问题的原因。但在回答您的问题时,我使用的是spring数据存储库,因此我不必添加
@Transactional
注释。错误与以下事实有关:您有代理对象,并且您在hibernate会话之外,因此无法对其进行编组/解编。您可以在此处查看