我们试图通过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