Boa tarde.
Estou com um problema (dúvida) que não estou conseguindo achar solução.
Tenho uma tela de pedidos, onde são inseridos itens. Organizados em 3 classes, sendo:
Pedido (classe criada pelo hibernate)
-> Item Pedido (classe criada pelo hibernate)
-> Produto (view criada no banco)
Eu consigo salvar pedido com itens normalmente, altero o pai tranquilo. Porém não consigo excluir itens, na realidade eu até excluo, ele mostra no front que foi excluído, porém não persiste no banco de dados.
Estou usando o merge(entidade). Segue minhas classes:
PEDIDO:
@OneToMany(mappedBy = "pedido", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
private List<ItemPedido> itens = new ArrayList<ItemPedido>();
ITEM PEDIDO
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "produto_fk",nullable = false)
private VIEW_PRODUTOS produto;
Quando dou o merge, recebo o erro:
Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02292: restrição de integridade (BANCO.FKNOSWMQL1N8YVP43QOPRWKXBJV) violada - registro filho localizado.
Percebi que o hibernate tenta excluir todos os itens:
Hibernate:
delete
from
TABELA_ITEM
where
id=?
Como posso fazer para ele excluir somente o item que o usuário removeu?
Método remover:
public void removeLinha(int linha) {
if (linha > 0) {
this.OBJETO.getItens().remove(linha);
qtdeItem--;
}
recalcularValores(OBJETO);
}
Nesse processo, ele remove, mostra pro usuario que removeu. Porém quando salvo, dá erro de persistência.
Alguém pode me dar uma luz?