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