我有一个使用 SQL 表的 Java 应用程序,其中包含按顺序列排序的实体的有序列表。我想在列表中间添加/删除内容。现在,我想知道一些持久性框架/orm/you-name-it 是否可以通过批量更新订单列来提供这种功能。
在基本情况下,Hibernate(可能还有其他)提供此功能。问题是对象一次只处理一个,当列表足够大时就会出现问题。另一种解决方案是使用批量 SQL 更新来完成此操作,例如如下所示:
UPDATE table SET order_col = order_col + 1 WHERE order_col > 47
INSERT TO table VALUES ('new_id', 'new_description, ..., 47)
数据库引擎可以很快完成,但不受支持。
现在,我知道这种批量更新在考虑对象及其版本控制、脏检查等时不太适合。我仍然会问是否有人有一些好主意,或者是否有一些持久性框架/ORM/你的名字- 它会提供一些帮助。当然,我可以使用自定义 SQL/HQL/... 来做这件事,但想知道是否已经有一些解决方案(我认为其他人之前可以做过类似的事情,甚至将其置于开源之下)。也欢迎与该问题相关的其他好主意=)