HQL + Join ==&gt Hibernate

3 respostas
oliveirarenan

Queridos Amigos.

Eu tenho um sql e preciso transforma-lo em hql

SELECT A.UIDPK, A.IMAGE, B.DESCRIPTION, B.DISPLAY_NAME, C.CODE AS MARCA, D.CURRENCY, E.LIST_PRICE, E.SALE_PRICE FROM TPRODUCT AS A LEFT OUTER JOIN TPRODUCTLDF AS B ON A.UIDPK = B.PRODUCT_UID LEFT OUTER JOIN TBRAND AS C ON C.UIDPK = A.BRAND_UID LEFT OUTER JOIN TPRODUCTPRICE AS D ON D.PRODUCT_UID = A.UIDPK LEFT OUTER JOIN TPRODUCTPRICETIER AS E ON D.UIDPK = E.PRODUCT_PRICE_UID ORDER BY NEWID()

Fiz o hql assim:

String Query = "select new br.com.bvti.ep.showcontext.ProductHome(a.uidpk, a.image, b.description, b.displayName, c.code, d.currency) "; Query += "from ProductTO as a "; Query += "left join a.tproductldfs as b "; Query += "left join a.tbrand as c "; Query += "left join a.tproductprices as d ";

Mas nao estou sabendo como fazer esse join da ultima linha: TPRODUCTPRICETIER AS E ON D.UIDPK = E.PRODUCT_PRICE_UID
Para q esse select me retorne apenas um tipo…

Alguem poderia me ajudar???

:lol: :lol: :lol: :lol:

Abs´s

3 Respostas

plentz

Como assim “um tipo”?

oliveirarenan

Me expressei errado…mas o select deveria retornar os campos que eu quero (E.LIST_PRICE, E.SALE_PRICE, da tabela TPRODUCTPRICETIER)

A tabela TPRODUCTPRICETIER é chave estrangeira da tabela TPRODUCTPRICE que por sua vez é chave da tabela TPRODUCT.

Quando gerei pelo hibernate concole, ele gerou essas chaves como um atributo HashSet.

Abs´s

mvalle

ué, coloque uma cláusula where no final e verifique as condições que você quiser…
Opcionalmente, você pode colocar uma condição WHERE no mapeamento da relação do VO A com cada um dos outros.

Criado 19 de março de 2007
Ultima resposta 21 de mar. de 2007
Respostas 3
Participantes 3