我有 3 个实体和它们的嵌套集合,如下所示:实体 A 包含 B 的集合,实体 B 包含 C 的集合。
而且我需要获取实体 A 的完整对象图列表。当我将 B 集合和 C 集合的获取策略设置为“子选择”时,实际上只有 B 的集合是通过单个查询读取的。每个 C 集合都是通过每个 B 类型实体的单独查询读取的 - 就像获取策略在那里“选择”一样。
所以我期待以下内容:
选择 ... 从 A select ... from B where a_id in (select id from A) select ... from C where b_id in (select id from B where a_id in (select id from A))
但实际上得到:
选择 ... 从 A select ... from B where a_id in (select id from A) select ... from C where b_id = ? select ... from C where b_id = ? ... select ... from C where b_id = ?
嵌套子选择是否有任何限制?
问题已经确定 - 映射到数据库的实体具有 getHashCode() 的自定义实现,它根据所有内部成员(包括集合)的值计算哈希代码。当 Hibernate 为实体 B 调用 getHashCode() 时,集合 C 尚未被读取,但它是获取哈希所必需的。因此执行一个单独的查询来获取当前对象 B 的 C 集合...
归档时间: |
|
查看次数: |
690 次 |
最近记录: |