Problema com exclusão usando List

Bom dia galera,

Estou com o seguinte problema.

Possuo uma tela onde eu adiciono o pedido e os itens do mesmo.

Para o mesmo eu utilizo um objeto de pedido e uma lista de itens pedido.
Para incluir um novo pedido funciona corretamente.
O problema está na hora que eu tento realizar a exclusão de um item do pedido logo apos o mesmo estar persistido.
Qual o procedimento que eu posso realizar para que depois de carregar uma lista de itens de pedido que em seguida sofreu
remoção de alguns itens da lista que já consta na base de dados, e para que estes itens que eu exclui da minha lista seja deletado da base e os
os que foram alterados continuem com a alteração que foi realizada ?

Obs: a lista de itens pedido é carregada após eu chamar uma operação que traz uma lista com todos os registros da base referente aos itens
de pedido. Na lista de itens de pedido da sessão eu consigo excluir perfeitamente, mas na hora de efetuar a persistencia novamente o mesmo
deverá deletar na base o item que eu exlcui na lista.

qual a melhor pratica para estes casos? Devo criar um lista com os otens revmovidos?

Alguem possue algum exemplo, abcss

Estou utilizando EJB3

Abcss T+

Não sei se o EJB já faz o tratamento de forma automática, mas acredito que não.
Quando eu tenho que tratar esse tipo de caso eu faço justamente o que você já citou, eu crio uma lista de exclusão.

[]´s

Daniel

Da uma olhada aqui:
http://www.guj.com.br/posts/list/133161.java#718427

Recomento que implemente os métodos equals e hashCode para todas as suas entidades.
Dica: pra tirar a diferença entre duas listas (uma antiga no BD e uma nova a ser adicionada, por exemplo, olhe nos métodos removeAll, talvez lhe ajude).

Abraços.

Eu faço da seguinte maneira: (assuma que o equals e hashcode estão implementados).
Vou usar um caso como exemplo onde tinha um pedido com uma lista de itens.
Quando o recebia um pedido pra ser atualizado fazia a pesquisa no banco desse pedido pra trazer o que esta persistido e poder comparar com o que eu quero atualizar no lugar.
Com o método removeAll da collection de itens tiro a diferença da collection de itens antigas(recuperada no passo anterior) com a collection de de itens novos recebidas pelo método. Esse removeAll vai me retornar uma collection com todos os itens que NÂO estão em uma das listas (é diferente se a antiga da um removeAll na nova e vice versa) daí removo esses itens resultados do banco e dou um merge/persiste no objeto do pedido.
Isso evita que eu compare “na unha” item a item ou que crie uma lista de remoção.
Caso nenhum tratamento seja feito os itens ficarão “ofãos” no banco, ou seja, sem a FK de relação com o pedido.

Abraços.

Opa, valeu galera…vou efertuar estas alterações

abcss T+