Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate ScrollableResults via HQL要求对每个关联进行左连接获取_Hibernate_Hql_Scrollableresults - Fatal编程技术网

Hibernate ScrollableResults via HQL要求对每个关联进行左连接获取

Hibernate ScrollableResults via HQL要求对每个关联进行左连接获取,hibernate,hql,scrollableresults,Hibernate,Hql,Scrollableresults,希望一些冬眠大师能帮上忙 我有一个如下所示的对象结构: class Customer { private Stuff1 stuff1; private Stuff2 stuff2; // Bazillion other fields } class Report { private Customer customer; private String uniqueBatchId; // Bazillion other fields } c

希望一些冬眠大师能帮上忙

我有一个如下所示的对象结构:

class Customer {
    private Stuff1 stuff1;
    private Stuff2 stuff2;

    // Bazillion other fields
}

class Report {
    private Customer customer;
    private String uniqueBatchId; 

    // Bazillion other fields 
}

class AbstractSpecialReport {
    private Report report;

    //Bunch of other fields
}

class SpecialReport extends AbstractSpecialReport{
    private List<ReportParts> reportParts;           
}
但是我得到了“java.sql.SQLException:Streaming result set com.mysql.jdbc”。RowDataDynamic@633f8d4f仍处于活动状态。在给定连接上打开并使用任何流结果集时,可能不会发出任何语句。请确保在尝试更多查询之前,已对任何活动流结果集调用了.close()

我已经登录了sql查询,我可以清楚地看到它在向前滚动后试图在报表上获取一个不相关的属性

所以我开始扩展我的HQL以包含这些字段

现在看来

select srpt
from SpecialReport as srpt
left join fetch srpt.report as rpt
left join fetch rpt.customer as cst
left join fetch rpt.field1
left join fetch rpt.field2
left join fetch rpt.field3
left join fetch rpt.field4 as child
-- now field 4 was an object that also has fields that are associations.
left join fetch child.field1
left join fetch child.field2
-- ad nauseum, this keeps going down the object tree 
left join fetch cst.stuff1
left join fetch cst.stuff2
where rpt.uniqueBatchId = :batchId
即使有大约25个join,我仍然有更多的字段被加载,导致相同的异常。
我可以继续手动浏览图表,但这需要花费很长时间,我觉得这不必要。查看Hibernate代码,滚动调用的
TwoPhaseLoad
似乎试图初始化对象中的所有代理和延迟加载字段,这必然打破了滚动运行时不执行其他sql查询的要求。这对任何人都有意义吗?

XxxToOne协会默认情况下都很热心。如果您不希望Hibernate急切地加载它们,请将它们注释为懒惰

此外,SpecialReport是一个报告,因此以下连接没有多大意义:

from SpecialReport as srpt
left join fetch srpt.report as rpt

默认情况下,XxxToOne关联是急切的。如果您不希望Hibernate急切地加载它们,请将它们注释为懒惰

此外,SpecialReport是一个报告,因此以下连接没有多大意义:

from SpecialReport as srpt
left join fetch srpt.report as rpt

这是我的代码草图中的一个错误,SpecialReport实际上并没有扩展报告。虽然我会检查*ToOne关联,但我并没有意识到它们是急切的。这是我的代码草图中的一个错误,SpecialReport实际上并没有扩展报告。不过,我会检查一下*图恩协会,他们并没有意识到他们很热心。