刚刚学习 Hibernate。 在列表类型属性映射中,似乎需要在持久化列表时编写“列表索引”。这包含列表中元素的索引/位置。
为什么需要这个“列表索引”?是否用于在从数据库再次加载时重建列表?
如果是这样的话,Hibernate 不能只以插入的顺序作为重建的基础,而不是依赖这个“list-index”吗?
此外,在 Set 中我们没有像“set-index”这样的东西,是因为在 set 中位置不重要吗?就像 HashSet 或 TreeSet(排序版本)等。
最佳答案
If this is the case, can't Hibernate just take the sequence of insertion as the basis for reconstruction instead of relying on this "list-index" ?
答案是否定的。因为在数据库的行中,本质上没有顺序感。没有人可以保证您可以获得查询结果(按照您将其插入数据库的顺序排序)。因此,为了跟踪索引,Hibernate 还需要保留索引列。
但是 HashSet 和 TreeSet 的生成并不依赖于元素的顺序。如果哈希方法和/或比较方法已知,则可以使用它们仅从元素集合构造 HashSet 和/或 TreeSet。
关于java - Hibernate 列表和集合映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21144805/