@marcospaulo.suporte escreveu:
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?
Mensagens: 6
Participantes: 3