【发布时间】:2013-08-03 19:59:49
【问题描述】:
众所周知,出于原子性原因,休眠不允许在一个实体中使用多个渴望集合。它发生了,因为它不能在一个查询中从不同的表中提取两个不同的集合。
问题: 但是当两个 eager-collection 属于两个相同的层次结构树的情况下呢?有什么办法可以在同一个实体对象中实现两个急切收集?
我是怎么想的:如果我们使用例如 table-per-class 继承策略并且两个集合属于这个层次结构,那么它们可以在一个请求中拉取(感谢联合操作) .
【问题讨论】:
-
我不太确定您的问题是什么,但是如果您使用 JPQL 或 Criteria API 并定义要获取的这些关系 - 它们将在大多数数据库上的原子操作中获取。只要确保检查结果集的大小不会影响性能。
-
我正在使用 Postgre。当我尝试声明多个急切获取的集合时 - MultipleBagError。
-
正如你所说,新的 Hibernate 版本在急切获取时似乎具有 OneToMany 关系的功能。 OneToOne、ManyToOne 和 ManyToMany 关系仍然适用于 Eager fetch 类型。每个使用 fetch 类型急切声明的 OneToMany 关系都会使我的应用程序的部署崩溃。 (c) [community.jboss.org/thread/107685?tstart=0]