为什么我的HQL查询急于加载延迟关联?

时间:2015-10-07 20:19:39

标签: java sql-server hibernate hql

我正在尝试提高HQL查询的性能,而且我很难过。我在调整器,ZipCode和EagleUsers对象上的OneToOne关联都标记为FetchType.LAZY,但是当我使用此查询时,它们会立即从数据库中拉出。

SELECT XMLSERIALIZE(
        DOCUMENT XMLROOT(
            XMLELEMENT("Forms",XMLATTRIBUTES('http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi"),
                XMLELEMENT("Year", b.Year),
                XMLELEMENT("Month", b.Month),
                XMLELEMENT("Date", trunc(b.R_MODIFY_DATE)),
                    XMLAGG(
                            XMLELEMENT("Form", b.DOCNUM)
                           )
                ),
            )  
    )
 FROM xml_bill  b
where
trunc(b.R_MODIFY_DATE) =trunc(sysdate)
GROUP BY b.Year, b.Month,trunc(b.R_MODIFY_DATE);

为什么这样做?

SQL输出:

session.createQuery(
            "FROM Adjuster a, ZipCode z, EagleUsers e WHERE a.eagleUsersByUserId = e.userId AND a.adjusterContact.zipCode = z.zip AND a.active = true AND a.isRecordDeleted = false"
            ).setMaxResults(1).list();

1 个答案:

答案 0 :(得分:0)

hibernate Query.list()函数获取整个对象,包括它的引用,因为它创建了一个与休眠范围分离的列表。