String hsql=" from Organization porg left join fetch porg.childern as corg ";
List<Organization> results=super.getSession().createQuery(hsql).setCacheable(true).list();
當沒有配置二級緩存,只配置查詢緩存是
第一次的sql爲
select
organizati0_.ID as ID0_0_,
childern1_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
organizati0_.PID as PID0_0_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
organizati0_.ORDER_NUM as ORDER7_0_0_,
organizati0_.PERSON_ID as PERSON8_0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
childern1_.DESCRIPTION as DESCRIPT4_0_1_,
childern1_.PID as PID0_1_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
childern1_.ORDER_NUM as ORDER7_0_1_,
childern1_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID0__,
childern1_.ID as ID0__
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
organizati0_.ID as ID0_0_,
childern1_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
organizati0_.PID as PID0_0_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
organizati0_.ORDER_NUM as ORDER7_0_0_,
organizati0_.PERSON_ID as PERSON8_0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
childern1_.DESCRIPTION as DESCRIPT4_0_1_,
childern1_.PID as PID0_1_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
childern1_.ORDER_NUM as ORDER7_0_1_,
childern1_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID0__,
childern1_.ID as ID0__
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
第二次sql爲
select
organizati0_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_1_,
organizati0_.DESCRIPTION as DESCRIPT4_0_1_,
organizati0_.PID as PID0_1_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
organizati0_.ORDER_NUM as ORDER7_0_1_,
organizati0_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID3_,
childern1_.ID as ID3_,
childern1_.ID as ID0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_0_,
childern1_.DESCRIPTION as DESCRIPT4_0_0_,
childern1_.PID as PID0_0_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
childern1_.ORDER_NUM as ORDER7_0_0_,
childern1_.PERSON_ID as PERSON8_0_0_
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
where
organizati0_.ID=?
Hibernate:
select
organizati0_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_1_,
organizati0_.DESCRIPTION as DESCRIPT4_0_1_,
organizati0_.PID as PID0_1_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
organizati0_.ORDER_NUM as ORDER7_0_1_,
organizati0_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID3_,
childern1_.ID as ID3_,
childern1_.ID as ID0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_0_,
childern1_.DESCRIPTION as DESCRIPT4_0_0_,
childern1_.PID as PID0_0_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
childern1_.ORDER_NUM as ORDER7_0_0_,
childern1_.PERSON_ID as PERSON8_0_0_
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
where
organizati0_.ID=?
organizati0_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_1_,
organizati0_.DESCRIPTION as DESCRIPT4_0_1_,
organizati0_.PID as PID0_1_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
organizati0_.ORDER_NUM as ORDER7_0_1_,
organizati0_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID3_,
childern1_.ID as ID3_,
childern1_.ID as ID0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_0_,
childern1_.DESCRIPTION as DESCRIPT4_0_0_,
childern1_.PID as PID0_0_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
childern1_.ORDER_NUM as ORDER7_0_0_,
childern1_.PERSON_ID as PERSON8_0_0_
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
where
organizati0_.ID=?
Hibernate:
select
organizati0_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_1_,
organizati0_.DESCRIPTION as DESCRIPT4_0_1_,
organizati0_.PID as PID0_1_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
organizati0_.ORDER_NUM as ORDER7_0_1_,
organizati0_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID3_,
childern1_.ID as ID3_,
childern1_.ID as ID0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_0_,
childern1_.DESCRIPTION as DESCRIPT4_0_0_,
childern1_.PID as PID0_0_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
childern1_.ORDER_NUM as ORDER7_0_0_,
childern1_.PERSON_ID as PERSON8_0_0_
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
where
organizati0_.ID=?
但當配置上二級緩存,不配置查詢緩存的話。則第二次點擊仍然會發出查詢語句
select
organizati0_.ID as ID0_0_,
childern1_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
organizati0_.PID as PID0_0_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
organizati0_.ORDER_NUM as ORDER7_0_0_,
organizati0_.PERSON_ID as PERSON8_0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
childern1_.DESCRIPTION as DESCRIPT4_0_1_,
childern1_.PID as PID0_1_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
childern1_.ORDER_NUM as ORDER7_0_1_,
childern1_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID0__,
childern1_.ID as ID0__
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
organizati0_.ID as ID0_0_,
childern1_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
organizati0_.PID as PID0_0_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
organizati0_.ORDER_NUM as ORDER7_0_0_,
organizati0_.PERSON_ID as PERSON8_0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
childern1_.DESCRIPTION as DESCRIPT4_0_1_,
childern1_.PID as PID0_1_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
childern1_.ORDER_NUM as ORDER7_0_1_,
childern1_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID0__,
childern1_.ID as ID0__
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
但當配置了二級緩存,再配上查詢緩存時。
第一次爲
select
organizati0_.ID as ID0_0_,
childern1_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
organizati0_.PID as PID0_0_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
organizati0_.ORDER_NUM as ORDER7_0_0_,
organizati0_.PERSON_ID as PERSON8_0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
childern1_.DESCRIPTION as DESCRIPT4_0_1_,
childern1_.PID as PID0_1_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
childern1_.ORDER_NUM as ORDER7_0_1_,
childern1_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID0__,
childern1_.ID as ID0__
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
organizati0_.ID as ID0_0_,
childern1_.ID as ID0_1_,
organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
organizati0_.PID as PID0_0_,
organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
organizati0_.ORDER_NUM as ORDER7_0_0_,
organizati0_.PERSON_ID as PERSON8_0_0_,
childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
childern1_.DESCRIPTION as DESCRIPT4_0_1_,
childern1_.PID as PID0_1_,
childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
childern1_.ORDER_NUM as ORDER7_0_1_,
childern1_.PERSON_ID as PERSON8_0_1_,
childern1_.PID as PID0__,
childern1_.ID as ID0__
from
g_organization organizati0_
left outer join
g_organization childern1_
on organizati0_.ID=childern1_.PID
而第二次 則直接從內存中獲取了。