Java 实施一项“计划”的最佳方法;“可再减额”;实体

Java 实施一项“计划”的最佳方法;“可再减额”;实体,java,hibernate,jpa,hibernate-mapping,spring-data-jpa,Java,Hibernate,Jpa,Hibernate Mapping,Spring Data Jpa,我有一个实体列表,或多或少地以列表的形式向用户显示。现在,用户不仅可以添加或删除实体,还可以对现有实体进行重新排序(使用典型的“向上”、“向下”、“转到顶部”、“转到底部”操作) 但实现这种行为的最佳方式是什么?当然,我可以在服务层“手动”编写所有需要的操作,但此功能似乎是一个常见的需求,因此可能已经有了某种标准解决方案?最合适的双向集合是: @OneToMany(cascade=CascadeType.ALL,mappedBy=“parent”,orphanRemoving=true) @Or

我有一个实体列表,或多或少地以列表的形式向用户显示。现在,用户不仅可以添加或删除实体,还可以对现有实体进行重新排序(使用典型的“向上”、“向下”、“转到顶部”、“转到底部”操作)


但实现这种行为的最佳方式是什么?当然,我可以在服务层“手动”编写所有需要的操作,但此功能似乎是一个常见的需求,因此可能已经有了某种标准解决方案?

最合适的双向集合是:

@OneToMany(cascade=CascadeType.ALL,mappedBy=“parent”,orphanRemoving=true)
@OrderColumn(“订单id”)
private List children=new ArrayList();

检索时,
order\u id
列将用于对元素进行排序,当您更改元素顺序时,Hibernate将根据当前元素索引发出相应的更新,以设置
order\u id
列。

可重排序的位置?在另一个实体?既然你把它标记为JPA,那么我假设在另一个实体中。此类型的实体必须是可排序的。问题在于,排序顺序可能会被用户随时更改(“现在该实体需要在列表中上升”)。这就是我所说的“reorderable”的意思。因此,如果您不是指“从数据库检索”,那么只需在您的JPQL查询中设置ORDERBY子句。如果您的意思是在检索到数据之后,将它们放入SortedSet并定义一个比较器……您不是说@OrderColumn吗?确切地在那篇文章中,OrderBy只是模拟了一个包的语义。OrderColumn是我想到的。谢谢
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", orphanRemoval = true)
@OrderColumn("order_id")
private List<Child> children = new ArrayList<>();