需要帮助优化HQL以减少返回的列

时间:2017-03-09 04:52:42

标签: hibernate hql

我的HQL如下: 从ProductMain作为pm join fetch pm.person as ps join fetch pm.personProduct as pp join fetch pm.personReturn as pr join fetch pp.personObjects as po其中pp.id in(180,000)and ps.id> =:lowRange and ps.id< =:highRange

似乎当我查询数据库时,我收到的每一列都让我得到了来自DB的904错误...有没有办法让特定的列回来减少结果的大小? 就像我有100K结果返回100列每个我只想要10列回.... 谢谢!

2 个答案:

答案 0 :(得分:0)

错误-904由无法获得的资源造成的不成功的执行。原因是原因代码,资源类型资源类型和资源名称资源名称....所以它与您需要查找的查询相关。

关于仅提取必需属性是,您可以这样写: -

SELECT pm.col1, 
       pm.col2 
FROM 
from   ProductMain as pm 
JOINFETCH pm.person AS ps 
JOINFETCH pm.personproduct AS pp 
JOINFETCH pm.personreturn AS pr 
JOINFETCH pp.personobjects AS po 
WHERE pp.id IN (180,000) 
AND   ps.id >= :lowRange 
AND   ps.id <= :highRange

答案 1 :(得分:0)

如果有人像我一样偶然发现这个问题,我会在Hibernat的Best Practices上找到一篇有趣的博客文章:https://www.thoughts-on-java.org/hibernate-best-practices/

请参阅“ 1.2 Pojo”一章:在上面的评论部分中回答问题:是的,您可以选择单个列,然后将它们传递到Pojo的构造函数中,该构造函数可以是同一实体,但可以具有另一个构造函数。

相关问题