Onte to Many não esta salvando lista de produto

Ola Pessoal preciso de uma ajuda com um sistema que estou desenvolvendo, sendo ele:
um cadastro de abertura de pedido(cadastro de Pedido)
BOm tenho 4 entidades:
empresa,
Pedido,
itemPedido,
Produto.
Relacionei as mesmas da seguinte maneira:
1 empresa pode abrir n pedidos
1 pedido pode conter n itemsPedido e
1 item de pedido pode conter n produtos.

BOm com esse relacionamento a principio estava somente inserindo o pedido ,porem os items do pedido não estavam sendo gravado o id do pedido para relacionar e “amarrar” os dados.

Atualmente ele esta assim:
salvo o pedido e ele grava dados do pedido dados dos items e os produto,porem no se eu tenho “10” produtos no meu item ele somente atribui o id do pedido ao ultimo produto adicionado deixando os outros produtos do meu itemPedido null.

Bom espero ter sido claro,pessoal agradeço desde ja a ajuda.

Obrigado.

opa, bom dia, cara, eu acho que fica melhor seu relacionamento se vc fizer 1 item de pedido contendo 1 produto

então pra cada item de pedido, vc adiciona um único produto.

Pensa comigo, vc tem um pedido, cada Item é um produto diferente, então pq um único item poderia ser 2 produtos diferentes?

Se vc pensou nesse relacionamento levanto em conta quantidade de produto, vc pode acrescentar na sua classe Item dois atributos
quantidade e subTotal.

Eae cara obrigado pela resposta.

Então cara a minha ideia com o item é essa dentro dele vou ter uma lista de produto ,e dentro do item eu vou ter a quantde para que eu possa fazer o total de produto e depois do pedido.
Então pensei se 1 pedido pode ter 1 item e 1 item n produtos agora se eu fizer com one To one item e produto o produto não pode repetir nesse item de pedido mais,certo?

Bom cara se acha q o relacionamento esta mal?

Não, não é one to onte, vc faz um ManyToOne a partir de produto, ou seja, um item terá apenas um produto, mas um produto pode ser relacionado a vários itens

Ô cara legal dessa maneira ,não tinha pensado assim,vou tentar dessa maneira ,mas me diz uma coisa vc tbm enxerga que 1 pedido pode conter apenas 1 itemPedido o sendo o item todos os produtos e nao cada item um produto?certo dessa maneira ou não?

Então, com um itemPedido sendo um único produto, vc teria um pedido para n itens

Então seria melhor deixar do jeito que esta atualmente um relacionamento OneToMany sendo um pedido pode ter n items e um muitos items podem estar em 1 pedido?

teu relacionamento ficaria mais ou menos assim

PEDIDO 1-----------------N ITENSPEDIDO N--------------1 PRODUTO

Seria como um relacionamento N-N entre PEDIDO e PRODUTO com uma classe associativa entre as duas

Boa cara,então eu tinha chegado a esse relaciomanto mas eu fiz direto NxN ,mas me deparei com uma necessidade de deixar a quantidade de produtos subtotal criando a classe itempedido para que assim eu receba a os produtos cadastro os valores e no banco ficaria gravado e mais organizado eu acho ficando as informações de qtde subtotal e o id_produto tudo na tabela de itempedido assim ficando até mais organizado…e no caso antes quando era N x N direto eu tinha a tabela gerada como :

pedido_id |produto_id
1 2
1 4
1 5

e os valores totais do item no pedido ,mas por exemplo não teria detalhes do pedido como qtde do produto x então achei q criando item de pedido eu teria isso mais algumas informações importantes,um amigo me disse pra não me ligar em como o banco fica pq isso é besteira o que importa e trazer os dados,mas pra mim a aplicação estar clara o banco tambem tem que esta,certo?

Bom, eu particularmente não ligo mto pro banco mesmo, mas nesse caso seu, não é que o banco não estaria certo, as informações que vc precisa não estariam, vc precisa de qtdade de produtos e valorsubtotal então vc precisava de uma classe (ItensPedido) para associar as suas entidades principais (Pedido e Produto) e armazenar as informações “extras” que vc precisava.

Mas há casos em que de repente vc não precise de nenhuma informação extra, tenha apenas um relacionamento NXN mesmo, sem necessidade de classe associativa, ai sim vc pode mapear de forma que o banco fique da forma que vc exempleficou, apenas armazenando os ids dos dois lados. Tudo depende da necessidade

Concordo, mas então se eu faço dessa maneira criando a entidade do itempedido não esta gravando o id do pedido em todos os produtos,então você acha que seria o relacionamento,na minha cabeça ficaria assim então:

1 pedido N itemns
N items 1 produto

Então cara eu acho q essa visão de N item com 1 produto é legal e ate sistemicamente mais facil.
Penso que posso criar o produto e adicionar varios em uma lista de item ,o que você acha:?

não fica legal, vc vai perder mtas funcionalidades com isso, no decorrer da sua programação vc vai ver como foi ruim, o correto é um item para um produto, e um produto pode ser atribuido a vários itens. e a o id do pedido realmente não deve ser gravado no seu produto, imagina como ficaria essa gravação? seria simplesmente inviável.

Tenta pensar com a lógica, quando vc quiser carregar um pedido, vc vai carregar uma lista de itens que correspondem a esse pedido, cada item possui o id do pedido, conseguentemente vc carrega cada produto referente aquele item, onde vc terá o id do produto para buscar, sua entidade item ficaria mais ou menso assim

public class ItemPedido{

private Pedido pedido;
private Produto produto;
private Integer qtdadeProduto;
private Double subTotalProduto;

//getters and setters
}

acredite, será mto mais fácil vc trabalhar dessa forma, conforme vc for programando vc vai ver

Issso então é assim que eu pensei ,porem o meu mapeamento estava assim

public class ItemPedido{

private Pedido pedido;

private List;

private Integer qtdadeProduto;

private Double subTotalProduto;

//getters and setters

sendo assim eu colocaria minha classe gerencia assim:
ITEMPEDIDO

public class ItemPedido{

@ManyToOne

private Pedido pedido;

@ManyToOne

private Produto produto;

private Integer qtdadeProduto;

private Double subTotalProduto;

//getters and setters

PEDIDO:

public class Pedido{

@OneTomany(…)

private List;

private Double subTotalPedido;

//getters and setters

PRODUTO:

public class Produto{

@ManyToOne

private ItemPedido;

private Integer qtdadeProduto;

private Double subTotalProduto;

//getters and setters

Certo?

so tua classe Produto que seria diferente

vc não precisa de relacionamento bidirecional entre produto e item produto, e não precisa dos atributos de item produto dentro de produto, seu produto seria simplesmente assim

public class Produto{
private Long idProduto;
private Double precoVenda;
private Double precoCusto;
private String descricaoProduto;
}

Bom cara você me deu uma otima visão ,muito obrigado vou fazer os testes hoje e te do um feedback
valew.
Brigadão

Pessoal por favor me ajuda,seguinte:
Tenho 4 entidades:
Pedido ,Produto , Item de Pedido e Empresa

Relacionamento delas é assim:
empresa 1 N Pedidos
pedido 1 N itemPedido
itemPedido1 N Produtos

O funcionamento:

crio um pedido,
crio uma empresa,
crio uma Lista itempedido,
add empresa ao pedido,
crio um produto e add na Lista itempedido.

add Lista itempedido no pedido
salvo o pedido.

O Problema:

Quando salvo o pedido salva-se o pedido porem não salva o idPedido na tabela itemPedido.
O idEmpresa salva normal na tabela de pedido.
Enfim o meu problema e que não entendo pq o idPedido não esta sendo salvo na lista de produto(itemPedido).
Agradeço desde ja.

Obrigado.