sql в hql - спящий режим - PullRequest
       0

sql в hql - спящий режим

0 голосов
/ 25 октября 2011

У меня есть эти два сценария 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)

эти sqls делают то же самое, иЯ много пытался взять HQL из любого, безрезультатно.отображение в спящем состоянии в порядке.

есть идеи?

1 Ответ

0 голосов
/ 25 октября 2011

Перевод немедленный:

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

Предполагается, что

  • Провайдер связан с одним лицом
  • Поставщик имеет много связей с продуктами, используя таблицу соединений product_provider
  • Продукт имеет ассоциацию OnetoMany с элементом

Если это не так, то опишите ваше отображение, потому что выполнение HQL без знания сущностей невозможно. Это похоже на выполнение SQL без знания таблиц.

Вы должны прочитать http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql. В нем много примеров запросов HQL и подробно объясняется, как они работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...