【发布时间】:2009-02-10 19:52:56
【问题描述】:
我在使用 Hibernate 的 DetachedCriteria 的 SQL 中遇到了性能问题。我有一些多对一的关系,当 Hibernate 生成 SQL 时,它包括来自在 FROM 中连接的表中的所有字段。 发生这种情况时,MySQL 会花费很长时间来运行查询(其中还有一个 order by 和 sub query 添加到问题中)。对于我目前的 50k 记录 ~6sec。当我将 SELECT 中不必要的字段删除到我关心的域对象时,它的运行时间低于 500 毫秒。
有没有办法让 Hibernate 不包含连接中的字段?
我尝试将映射文件中的 fetch 参数设置为“join”和“select”,这对生成的 SQL 没有影响。
我也尝试过设置不同的根条目,但从我读过的内容来看,这不适用于分页(我也在这样做)。
我可以尝试将查询编写为 HQL,但使用子查询只会让人头疼。
【问题讨论】:
-
现在指定投影有效(为每个指定别名);如果有一种简单的方法来投射实体。*那就太好了。我还必须设置结果转换器以使用 Transformers.aliasToBean(RootEntity.class)) 正确设置对象
标签: hibernate