实现 "reorderable" 实体的最佳方式

Best way to implement an "reorderable" Entity

我有一个或多或少作为列表显示给用户的实体列表。现在,用户不仅可以添加或删除实体,还可以对现有实体重新排序(使用典型的 "go up"、"go down"、"go to the top"、"go to the bottom" 操作)。

但是实现此行为的最佳方式是什么?当然我可以在服务层编写所有需要的操作"manually",但这个功能似乎是一个普遍的需求,所以也许已经有某种标准的解决方案?

最合适的双向集合,是一个ordered List:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", orphanRemoval = true)
@OrderColumn("order_id")
private List<Child> children = new ArrayList<>();

order_id 列将用于在检索时对元素进行排序,当您更改元素顺序时,Hibernate 将发出适当的更新以根据当前元素索引设置 order_id 列。