[JPA] Removendo objeto de coleção

Salve gujeiros…

Estou com uma problema e queria pedir ajuda dos amigos:

Tenho três entidades: Pedido, ItemPedido e ItemPedidoLiberado.

Pedido

@Entity
public class Pedido implements java.io.Serializable {

private Set<ItemPedido> itensPedido;

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pedido")
	public Set<ItemPedido> getItensPedido() {
		return this.itensPedido;
	}
	
}

ItemPedido

@Entity
public class ItemPedido implements java.io.Serializable {

	private Pedido pedido;
	
	private Set<ItemPedidoLiberado> itemPedidoLiberado = new HashSet<ItemPedidoLiberado>(0);
	private Set<ItemPedidoCancelado> itemPedidoCancelado = new HashSet<ItemPedidoCancelado>(0);

@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_pedido")
	public Pedido getPedido() {
		return pedido;
	}

@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE,CascadeType.REMOVE}, mappedBy = "itemPedido")
	public Set<ItemPedidoLiberado> getItemPedidoLiberado() {
		return this.itemPedidoLiberado;
	}

	public void addItemPedidoLiberado(ItemPedidoLiberado itemPedidoLiberado) {
		this.itemPedidoLiberado.add(itemPedidoLiberado);
	}
	
	public void removeItemPedidoLiberado(ItemPedidoLiberado itemPedidoLiberado) {
		this.itemPedidoLiberado.remove(itemPedidoLiberado);
	}
	
}

ItemPedidoLiberado

@Entity
public class ItemPedidoLiberado implements java.io.Serializable {

  private ItemPedido itemPedido;;

  @ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_item_pedido", nullable = false)
	public ItemPedido getItemPedido() {
		return itemPedido;
	}
}

Tenho o seguinte método que tem por objetivo remover um objeto ItemPedidoLiberado da coleção Set de ItemPedido.

public String removeItemPedidoLiberado(String idItemPedidoLiberado) {
		
		ItemPedidoLiberado itemPedidoLiberado = pedidoRepository.getItemPedidoLiberado(idItemPedidoLiberado);
		ItemPedido itemPedido = pedidoRepository.getItemPedido(itemPedidoLiberado.getItemPedido().getIdItemPedido());
		Pedido pedido = pedidoRepository.getPedido(itemPedido.getPedido().getIdPedido());
		
                // esse método faz itemPedido.removeItemPedidoLiberado()
		pedido.desfazerLiberacaoItemPedidoParaCarregamento(itemPedido, itemPedidoLiberado);

                // esse método chama em;merge(pedido)
		ret = pedidoRepository.atualizar(pedido);
		
		return ret;	

	}

Após fazer o merge de Pedido, o objeto ItemPedidoLiberado não é removido do banco. Ele é removido da lista mais essa remoção não acontece no banco.

O que teria que mudar pra que isso seja possível?

Obrigado aos que puderem ajudar.

[]'s

a arquitetura do sistema foi alterada e não iremos mais utilizar as três classes, apenas duas.

Mais se alguém souber onde está o problema ou se é mesmo possível fazer o merge na classe Pedido e atualizar ItemPedido e ItemPedidoLiberado, fique a vontade… hehe

[]s