【发布时间】:2012-07-11 12:58:19
【问题描述】:
在持久化和从数据库中检索的同时维护集合顺序的首选方法是什么?
我知道@OrderBy 更像是一种内存排序,只有当您按照您选择的列的顺序保留行时才能进行检索。
假设我选择使用由数据库序列支持的列,将休眠确保集合中的元素以与集合中相同的顺序保存(例如列表)。
有什么想法吗?
更多细节:
假设我有一个 A 类,它与 B 类具有一对多关系。B 有一个主键字段“Id”,它由 DB 中的序列支持。
Class A {
List<B> bList;
}
我一直想保留 A 中元素 B 的顺序,如下所示:
bList = { b1, b2, b3 }
实现的一种方法是使用@OrderBy(“Id ASC”)。仅当列表 B 按以下顺序保留时,这才有效:
----------------
Id ----bValue
----------------
1------ b1
2------ b2
3-------b3
------------------
当我们检索时,因为它是按 Id 排序的,所以保持顺序。
假设集合 B 以下列方式持久化:
----------------
Id ----bValue
----------------
1------ b2
2------ b1
3-------b3
------------------
当我们检索时,列表 B 的顺序进行了折腾(因为它是按 Id 列排序)。所以我的问题是,如果集合 B 始终保持与列表中出现的顺序相同的顺序。
【问题讨论】:
标签: hibernate