gpt4 book ai didi

java - 生成json树时出现StackOverflowError

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:32 24 4
gpt4 key购买 nike

正在创建在线商店。我需要生成代表类别树的 json,但是当我生成它时出现 StackOverflowError。类别实体:

@OneToMany
@JoinColumn(name = "parent_category_id")
private List<Category> subcategories;


@ManyToOne
@JoinColumn(name = "parent_category_id")
private Category parentCategory;

Json生成方法,我从Controller发送List来表示树

    @Override
public List<Category> getCategoryTree() {
List<Category> categories = categoryDao.findAll();
List<Category> roots = categories.stream()
.filter(category -> category.getParentCategory()!=null)
.collect(Collectors.toList());
return roots;
}

我猜这是因为 child 得到 parent , parent 得到 child 。但我不能放置 @JsonIgnore 注释,因为那样它只会写入没有 child 的 parent 列表或没有 parent 的所有 child ,是否必须有一种方法来生成 json

最佳答案

解决方案非常简单,StackOverflowError是因为子级生成父级,父级生成子级,解决方案非常简单,细节,一个注释@JsonBackReference

实体:

    @OneToMany
@JoinColumn(name = "parent_category_id")
private List<Category> subcategories;


@ManyToOne
@JsonBackReference
@JoinColumn(name = "parent_category_id")
private Category parentCategory;

Json树生成方法:

    @Override
public List<Category> getCategoryTree() {
List<Category> categories = categoryDao.findAll();
List<Category> roots = categories.stream()
.filter(category -> category.getParentCategory()==null)
.collect(Collectors.toList());
return roots;
}

关于java - 生成json树时出现StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41338314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com