5
respostas

Pedido com Join em Item Pedido

E quanto ao item do Pedido, qual seria a melhor estratégia (sem precisar fazer um For em pedido.getItens() e sem precisar criar um Vo ) para mostrar os dados na mesma linha do Pedido, como um Inner Join mesmo.

É que tem várias formas de fazer e algumas que vejo não acho muito interessantes

5 respostas

Oi Hebert,

Você pode fazer um join fetch normalmente para carregar a lista de itens do pedido:

SELECT p FROM Pedido p JOIN FETCH p.itens WHERE p.id = :id

então..mas o seguinte. Se quiser pegar os itens do pedido tem que iterar o pedido.getItens(), pois o resultado vem como um objeto de pedido em cada "linha" E a minha pergunta era para receber os dados já no objeto Pedido. As soluções que já vi foram construir um VO e colocar todos os campos lá. No caso a minha pergunta era como evitar isto

Precisa fazer um distinct para não repetir os registros, se o pedido tiver mais de um item:

SELECT DISTINCT(p) FROM Pedido p JOIN FETCH p.itens WHERE p.id = :id

Mas não sei se era bem isso que você quis dizer :D

Então, mas é para repetir. Porém queria pegar o pedido.getItens() não na forma da lista como ele vem, mas junto com cada pedido.

ID_PEDIDO, data, item_pedido_1.campo1, item_pedido_1.campo2

ID_PEDIDO, data, item_pedido_1.campo1, item_pedido_1.campo2

ID_PEDIDO, data, item_pedido_1.campo1, item_pedido_1.campo2

algo assim: pedido.getItens().getNomeDoCampo;

Dá pra fazer, usando um VO e tal, mas era isto que queria evitar.

Ah sim,

Vai ter que usar um select new com vo mesmo, nesse caso =/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software