java - Hibernate 列表和集合映射

标签 java hibernate

刚刚学习 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/

相关文章:

java - 我无法运行我的第一个 Spring 应用程序,Hello World?我已经添加了所有 jar

Java MemoryClassLoader(IllegalArgumentException)

Java JDBC 多重插入和一般最佳实践

java - 使用 MappedSuperClass 对相关表进行 Hibernate 过滤器

java - java中的这些注释会抛出什么异常?

java - Hibernate 延迟加载 - 获取列表中的列表项

java - Hibernate SessionFactory 无法从在 AWS EC2 实例中运行的 WEB 应用程序初始化,但从笔记本电脑运行正常

java - 为什么 java 同时具有 cacerts 和 jssecacerts 文件?

java - 为什么外键的值总是为零?

java - 一个极端使用日志记录的开源项目