Deletando linhas "orfãs" no ManyToMany

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.

up

adiciona o orphanRemoval=true que ele deleta.

pode ser que precise usar o mappedBy

Polverini, pelo que eu sei o DELETE-ORPHAN não funciona em mapeamentos ManyToMany, certo ? Sendo assim o orphanRemoval (JPA) == Delete-orphan (Hibernate). Creio também que não precise usar o “mappedBy” no lado do ItemOrcamento, pois eu não quero fazer um Set de Consultas do objeto ItemOrcamento, é uma relação Uni direcional.

up