【发布时间】:2020-04-14 04:58:49
【问题描述】:
hibernate 的@OneToMany 关联如何与 java.util.Map 类型一起工作?我也使用@MapKey。
它是否首先加载查询结果集并遍历以在其中创建关联对象?
例如; 我有一个实体汽车 我有另一个实体 CarFeatures
汽车与CarFeatures @JoinColumn("carId") 有一个@OneToMany, FetchType.LAZY 关系。还包括一个带有注释@MapKey("KEY")的功能键
当我想在屏幕上列出所有汽车以及列表中的一些功能时。我正在使用 JOIN FETCH 生成查询以选择与汽车关联的所有功能。
检查了查询,似乎查询正在从带有汽车功能的汽车中选择car.* and carfeature.*。
但是当汽车列表的数量很大时;加载结果集花费了太多时间。
这就是为什么我试图了解幕后发生的事情?据我所知;
- Hibernate 触发查询。
- Hibernate 获取 resultSet 结果集中的每一行都包含 car 及其“one”特性。表示一辆车是否有 20 个功能。结果集中每辆车将有 20 行。
- 然后休眠创建包括地图在内的汽车对象。在执行此休眠时,会遍历 resultSet 并将每个 CarFeature 与键值放在一起。
我的理解正确吗?如果是这样,我怎样才能有效地选择汽车及其功能?
我打算做的一件事是;跳过特征表并创建一列 Varchar 以手动将特征编组/解组为列表。
【问题讨论】:
标签: hibernate one-to-many hibernate-mapping