sql into hql - hibernate



我有这两个sql脚本,我得到一些问题执行在hql中的转换,将用于来自JPA的查询:

SELECT f.idprovider, pe.name from provider f
inner join person pe
on(f.idperson = pe.idperson) 
inner join product_provider pf
on(f.idprovider = pf.idprovider) 
inner join product p
on(pf.idproduct = p.idproduct)
inner join item i
on(p.idproduct = i.idproduct)
where i.iditem = 1

SELECT f.idprovider, pe.name, pe.cnpjf from product_provider pf
inner join provider f  
on(pf.idprovider = f.idprovider)
inner join coliseusys.person pe
on(f.idperson = pe.idperson)
inner join product p
on(pf.idproduct = p.idproduct)
where p.idproduct = (select p2.idproduct from item i inner join product p2
on(i.idproduct = p2.idproduct) where i.iditem = 1)

这些sql做同样的事情,我已经尝试了很多做HQL从任何它,没有结果。hibernate中的映射是可以的。

任何想法?

立即翻译:

select f.id, pe.name from Provider f
inner join f.person pe
inner join f.products p
inner join p.items i
where i.id = :itemId

这里假设

  • Provider与Person有toOne关联
  • 提供者与产品有许多关联,使用连接表product_provider
  • Product与Item
  • 存在onetmany关联

如果不是这样,那么描述你的映射,因为在不知道实体的情况下做HQL是不可能的。这就像在不了解表的情况下做SQL。

你应该阅读http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql。它有很多HQL查询的例子,并详细解释了它们是如何工作的。

最新更新