Bom dia.
Tenho uma tela de pedidos que estou desenvolvendo e empaquei em um problema a qual não sei solução.
Possuo 3 tabelas (classes) mapeadas no Hibernate
-> Pedido
-> ItemPedido
-> W_VEN_PED_PRODUTOS (uma view em oracle que contem os produtos)
na minha classe ‘Pedido’, tenho:
@OneToMany(mappedBy = "pedido", cascade = CascadeType.ALL, fetch =
FetchType.EAGER)
private List<ItemPedido> itens = new ArrayList<ItemPedido>();
na ItemPedido, tenho:
@ManyToOne
@JoinColumn(name = "produto_fk",nullable = false)
private W_VEN_PED_PRODUTOS produto;
E possuo um método que eu adiciono um produto vazio no pedido para o usuário inserir o produto:
public void adicionarItemVazio() {
if (this.IsOrcamento()) {
W_VEN_PED_PRODUTOS produto = new W_VEN_PED_PRODUTOS();
ItemPedido item = new ItemPedido();
item.setPed_item_qtde(1);
item.setProduto(produto);
item.setPedido(this);
this.getItens().add(0, item);
}
}
O problema é:
Ao dar um merge no pedido, e adicionar uma linha nova depois do merge, o sistema retona o erro:
java.lang.IllegalStateException: About to execute actions, but there are unresolved entity insert actions.
Se eu não adicionar uma linha nova no item ao dar merge, ele salva normal o pedido, os itens, tudo. Não tenho ideia do que é…
Meu método de salvar:
public void saveNotReturn() throws Exception {
recalcularValores();
this.objetoSelecionado.removerItemVazio();
objetoSelecionado = pedidoController.merge(objetoSelecionado);
sucesso();
atualizar();
//this.objetoSelecionado.adicionarItemVazio();
}
Se eu remover o comentário a última linha, dá o erro.
E se eu crio um botão no jsf chamando o método adicionar o item vazio, ele funciona normal.
Alguém poderia me dar uma luz?