我們試圖通過HQL執行以下查詢,但我們被卡住了,並且此查詢未向我們顯示任何結果。休眠查詢使用或不顯示結果
select s from Serie s where
(s.arrivalSerie is not null and s.arrivalSerie.company.isEnable=1)
or (s.departureSerie is not null and s.departureSerie.company.isEnable=1)
我們拋出這個查詢有:
Query query = em.createQuery("previous query");
query.setFirstResult(initialElement);
雖然測試此查詢,我們發現了這個查詢(「或」)可以用結果來執行的任何部分。但是當整個查詢被執行時,我們得到0個元素集合。
任何想法?
UPDATE:
的理解翻譯的查詢會是這樣的:
select
s.*
from
serie s,
arrivalSerie a,
company ca,
departureSerie d,
company cd
where
s.idArrivalSerie=a.idArrivalSerie
and a.CompanyCode=ca.CompanyCode
and s.idDepartureSerie=d.idDepartureSerie
and d.CompanyCode=cd.CompanyCode
and (
(
s.idArrivalSerie is not null
)
and ca.isEnable=1
or (
s.idDepartureSerie is not null
)
and cd.isEnable=1
) limit 0,10;
當然這是不向我們展示結果在一個MySQL客戶
你能檢查從這個hql生成的sql嗎? –
您可以通過在hibernate配置中將show-sql屬性設置爲true來進行調試,控制檯將打印生成的SQL查詢,您可以在數據庫中運行它並查找。 – Zeus
變量'initialElement'包含什麼?如果你想要第一個元素,你應該把它設置爲0. – Paolo