我们正在尝试通过 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 个元素集合。
有任何想法吗?
更新:
一个可以理解的翻译查询将是这样的:
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 客户端的结果