HIBERNATE HQL语句的性能问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:20:49
例如From Qiyue q left join fetch q.yewu left join fetch q.yewu.jituan where ...
这样的连接语句会把yewu.jituan表中所有字段全都取出来,可是用到的只是其中的某一或者某些字段,例如我只要yewu里的yewumingcheng ,jituan里的jituanmingcheng字段应该如何改这个HQL语句?取全字段的速度实在太慢,越到关系的底层速度越来越慢。

hql也可以写select呀。如
select q.yewu.yewumingcheng , q.yewu.jituan.jituanmingcheng From Qiyue q left join fetch q.yewu left join fetch q.yewu.jituan where ...

但返回的结果就不是model对象的List,而是Object[]的List。
结果可以是自己处理,或通过query.setResultTransformer(Transformers.aliasToBean(Class))进行对象封装

怎么有两个left join?

手工书写select 的字段,当然,你也就不能使用返回的对象了。

写成sql语句 然后Query query = session.createSQLQuery(sql);
这样Hibernate直接执行sql命令效率更高

LZ可以考虑看下Hibernate的加载延迟
就能解决你的问题
我也不太会用 但我面试问到过这个名词
回来好奇差了下 貌似就是你要的
BAIDU一下吧。

写成sql语句 然后Query query = session.createSQLQuery(sql);