Bom, meu problema é o seguinte:
1- Tenho uma Orcamento que tem relacionamento OneToMany com a tabela ItemOrcamento, ou seja, um Orçamento pode ter vários itens.
2- Tenho uma tabela Consulta, essa consulta pode ter vários itens do orçamento, então como um ItemOrcamento pode fazer parte de várias Consultas e uma Consulta pode ter vários ItemOrcamento, temos um ManyToOmany entre Consulta e ItemOrcamento. (Mapeado abaixo)
@ManyToMany(fetch = javax.persistence.FetchType.LAZY)
@JoinTable(name = "item_consulta", joinColumns = { @JoinColumn(name = "id_consulta") }, inverseJoinColumns = { @JoinColumn(name = "id_item_orcamento") })
private Set<ItemOrcamento> itens;
Quando crio uma nova Consulta, com os itens do orçamento, tudo funciona perfeitamente. Porém imagine que o item que estava na consulta vai ser substituido, então o item atual é deletado e é inserido um novo item na consulta. Ocorre que ele faz o insert item_consulta mas não deleta o item que fora removido.