我在配置文件中将 use_outer_join 选项设置为 true。
我还有一个映射的数据库表。我在 sql 日志中看到对于外键,hibernate 为每个记录生成单独的选择。它不使用连接从主表中获取数据。
有什么我忘记了吗?这还有什么问题?
谢谢
是的,就是这样:在映射文件中指定外连接是不够的。
如果要强制进行外部联接,则必须在 HQL 语句中指定它。例如
from firstTable as a outer join fetch a.secondTable as b where ...
检查您的关系映射。如果默认情况下没有指定代理,将为孩子返回..当您访问它的任何属性时,孩子将被加载。它将在单独的 SQL 选择中加载。
您应该在集合映射中使用“outer-join=true”。(如果 hibernate.use_outer_join 在配置中为 true 并且集合映射具有 outer-join="true"...那么只有 hibernate 会生成外部联接)。