[RESOLVIDO] Update da tabela Pedido não exclui registros de ItemPedido

Pedido.java

@ManyToOne
@JoinColumn(name = "ped_cod_cliente_ped")
private Cliente cliente;

@ManyToOne
@JoinColumn(name = "ped_cod_vendedor_ped")
private Vendedor vendedor;

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "item_pedido")
private List<ItemPedido> itemPedido;

@JoinColumn(name = "ped_total_ped")
private double total;

ItemPedido.java

@OneToOne
@JoinColumn(name = "item_cod_produto_item")
private Produto produto;

@JoinColumn(name = "item_preco_item")
private double preco;

@JoinColumn(name = "item_quantidade_item")
private Long quantidade;

DAOGenerico.java

public final Entidade alterar(Entidade objeto) {
	EntityTransaction tx = getEntityManager().getTransaction();
	try {
		tx.begin();

		objeto = getEntityManager().merge(objeto);

		tx.commit();

	} catch (Exception e) {
		e.printStackTrace();
		if (tx != null && tx.isActive()) {
			tx.rollback();
		}
	}
	return objeto;
}

MBPedidoEdit.java

public String atualizarPedido() {
	pedido.setCliente(cliente);
	pedido.setVendedor(vendedor);

	daoPedido.alterar(pedido);
	instanciaObjetos();
	return "";
}

Todos eles estendem de BaseEntity.java(exceto as classes DAOGenerico.java e MBPedidoEdit.java), classe base que possui apenas um atributo: codigo.


O problema é o seguinte, sempre que eu faço um Pedido com 4 itens por exemplo, todos os 4 itens são inseridos normalmente na tabela ItemPedido. Mas quando vou para a página editarPedido e removo o 1º e o 2º item, restando apenas o 3º e o 4º e faço o update, na tabela ItemPedido os itens 3 e 4 continuam persistidos e associados ao Pedido, mas os itens 1 e 2 ficam NULL na coluna onde deveria estar o ID do pedido, ou seja, restando lixo na tabela.

Em poucas palavras, quando faço o update os itens retirados do pedido continuam no banco(só que setados como nulo), poluindo a tabela.

Já tentou assim:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name = "item_pedido")
private List<ItemPedido> itemPedido;

Tem que avaliar qual o lado correto da opção orphanRemoval.

Sugiro que comece pelo lado do pedido.

Att

1 curtida

Muito obrigado parceiro, resolvesse meu problema! Era exatamente isso o que faltava na entidade Pedido. :grin:

Show de bola, marque como resolvido para ajudar as outras pessoas então.
Grande Abraço