实体:
ackage com.dmo.screen.po;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Data
@Entity
@Table
public class Organization implements Serializable {
//自增主键生成策略
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false, unique = true, length=11)
private Integer id;
@Column(length=40)
private String name;
// 父节点
@Column(nullable = false)
private Integer parentId;
@Transient
private List<Organization> children;
}
构建树
public static List<Organization> buildTree(List<Organization> nodes) {
Map<Integer, List<Organization>> sub = nodes.stream().filter(node ->
node.getParentId() != 0).collect(Collectors.groupingBy(node -> node.getParentId()));
nodes.forEach(node -> node.setChildren(sub.get(node.getId())));
return nodes.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList());
}