【发布时间】:2012-06-24 23:00:27
【问题描述】:
我有一个 Hibernate 类的子值列表。我最初的实现是一个 Set,但它返回的值本质上是“数据库顺序”(可能基于聚集索引,这几乎是插入顺序)。
我考虑切换到 List,所以我添加了一个 ,但我很快遇到了一个问题,即返回的 java List 中有空值。我的一些数据是由 Hibernate 编写的,但也有一些是由 SQL 脚本编写的。
我想要的是一个与列表中的位置无关的 sortOrder 属性,这样如果有重复,即 { 1, 3, 3, 10 } 它会适当地映射到 { 0, 1, 2, 3} 其中第 2 项和第 3 项的顺序回退到数据库顺序。 Null 也很好,我不在乎它们是放在列表的前面还是后面(只要行为一致)。
我查看了 Bag,但不确定如何将 sortOrder 属性添加到定义中,而且我有点担心它会允许重复。我仍然希望拥有与使用 Set 时相同的约束(我相信父/子元组始终是唯一的)。
建议?我可以调整 Bag 以使其充当带有 sortOrder 的列表而不是带有索引的列表吗?我还需要做些什么来保护代码不被 SQL 直接输入的数据挂起?
【问题讨论】: