2013-10-02 73 views
0

我有以下sql,但目前无法将其转换。 我刚刚停止了子选择的极限。谁能帮我?将sql转换为hql,在子查询中使用Limit

select(select p2.numnfe from xml_itens as p2 
where p2.cod_prod_cli is null 
and p2.ean_prod = p1.ean_prod 
and p2.cnpj_for = p1.cnpj_for 
and p2.cod_prod_for = p1.cod_prod_for 
and p2.cfop != 5929 and 6929 
LIMIT 1 
) as num_nfe, 
(SELECT descricao_prod from xml_itens as p2 
where p2.cod_prod_cli is null 
and p2.ean_prod = p1.ean_prod 
and p2.cnpj_for = p1.cnpj_for 
and p2.cod_prod_for = p1.cod_prod_for 
and p2.cfop != 5929 and 6929 
LIMIT 1 
) as descricao_prod, 
cnpj_for, ean_prod, cod_prod_for, cod_prod_cli 
from xml_itens as p1 
where cod_prod_cli is null 
and p1.cfop != 5929 and 6929 
group by cnpj_for, ean_prod, cod_prod_for; 

我设法做到了,但赶上时间从数据库中只返回一条记录。

String sql = "select (" 
      + " select p2.numnfe from XmlItens p2 where p2.codProdCli is null and p2.eanProd = p1.eanProd and p2.cnpjFor = p1.cnpjFor and p2.cfop != 5929 and p2.cfop != 6929) as numnfe, " 
      + " p1.cnpjFor, p1.eanProd, p1.codProdFor from XmlItens p1 " 
      + " where p1.codProdCli is null " 
      + " group by p1.cnpjFor, p1.eanProd, p1.codProdFor"; 

感谢

回答

1

我无法找到任何东西,它取代了LMIT SQL。所以,而不是转换查询,我使用功能createsqlquery()休眠,它的工作。

0

无论hibernate团队在这个变化背后的推理如何,我不能开始告诉你它是多么令人沮丧。

这就是说,用EXIST关键词来创作。在这个例子中,我们正在寻找1的限制选择TOP 1等。EXIST可能是你唯一的非本地解决方案。