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