我正在尝试提高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();
答案 0 :(得分:0)
hibernate Query.list()函数获取整个对象,包括它的引用,因为它创建了一个与休眠范围分离的列表。