【发布时间】:2017-10-03 21:45:47
【问题描述】:
我有目录实体 -
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String categoryName;
@ManyToOne
@JoinColumn(name = "parent_id")
private Category parent;
@OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<Category> children = new ArrayList<Category>();
@ManyToMany(mappedBy = "categories")
private Set<Product>
以及表中的记录:
id, category_name, parent_id
'1', 'HOME', NULL
'2', 'Category 1', '1'
'3', 'Category 2', '1'
'4', 'Sub-Category 1', '2'
'5', 'Sub-Category 1 2', '2'
以及控制器中的一些方法(在我的情况下,但问题是原则)
List<Category> categoryList = categoryRepository.findAll();
for (Category cat : cateList) {
recursiveTree(cat);
}
public void recursiveTree(Category cat) {
System.out.println(cat.getCategoryName());
if (cat.getChildren().size() > 0) {
for (Category c : cat.getChildren()) {
recursiveTree(c);
}
}
}
当我运行它时,在控制台中我得到 -
HOME
Category 1
Sub-Category 1
Sub-Category 1 2
Category 2
Category 1
Sub-Category 1
Sub-Category 1 2
Category 2
Sub-Category 1
Sub-Category 1 2
如何修改递归,以便获得类别和子类别的正确顺序?我不知道为什么我会得到一些重复的数据
【问题讨论】:
-
因为
getChildren()不起作用 -
什么意思?你能帮我吗?
-
我想,但我不知道怎么做。