java - 如何为扩展父编号的树实体对象编号?
问题描述
我有一个项目实体
@Entity
public class Item {
@Id
private Long id;
@ManyToOne
private Item parentItem;
private String name;
private String number;
// getters & setters
}
我想要一个生成具有以下规则的数字的函数:
- 根元素得到一个单一的数字,如 1. 2.
- 子元素扩展其父编号并获得类似 1.1 的数字。1.2
- 其他后代元素也扩展了它们的父编号,如 1.1.1。1.1.2
- 后代级别没有限制。
解决方案
只需遍历(从叶到根)树并连接数字:
@Entity
public class Item {
@Id
private Long id;
@ManyToOne
private Item parentItem;
private String name;
private String number;
String getHierarchy(){
return this.parentItem != null ?
this.parentItem.getHierarchy() + " . " + this.number :
this.number
}
}
推荐阅读
- uitableview - UITableView 将行数调整为 StoryBoard 中的行数
- oracle - 将 SP 中的有效记录插入到有效表中,将无效记录插入到 Invalid SP 中
- javascript - Javascript ES6 - 如何向对象添加动态属性?
- c# - 无法加载文件或程序集 XXX 或其依赖项之一。该模块应包含程序集清单
- java - JList 在添加到 JScrollPane 时消失
- python - 自动完成什么都不做。怎么了?
- java - Android 中的 P2P 音频共享
- nexus - 如何为 nexus3 原始存储库启用目录列表?
- go - 如何理解 uintptr 和 struct 之间的关系?
- c# - Blazor Webassembly 中的 DateTime.Now 为空