@marcospaulo.suporte escreveu:
Boa noite.
Estou com uma dúvida que talvez seja simples. Estou usando HibernatePosso uma classe de Pedidos que é relacionada com uma de itens
@OneToMany(mappedBy = "pedido", cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.EAGER) private List<ItemPedido> itens = new ArrayList<>();
Minha classe itens do pedido é relacionada com a classe de produtos:
@Basic @ManyToOne @JoinColumn(name = "prd_codigo") @ForeignKey(name = "produto_item_pedido_fk") private Produto produto;
Dentro da classe de produto eu guardo o estoque do mesmo.
Ao fazer um novo pedido, insiro itens e consigo ver os estoques normalmente.
Ao gravar o pedido eu não altero o estoque.Ao mudar o ‘status’ do pedido, eu dou baixa nos itens por meio de um método na classe de produto. Ou seja, percorro os itens do pedido, vejo se tem estoque e chamo a função conforme navego nos itens.
public void baixarEstoque(Integer quantidade) throws Exception { if (this.getPrd_codigo() != null) { System.out.println("***********************************************************"); System.out.println("Baixando estoque do produto.: " + this.getPrd_codigo_proprio()); int novaQuantidade = this.getPrd_estoque() - quantidade; System.out.println("Estoque atual.: " + this.getPrd_estoque() + " - Qtde a ser baixada: " + quantidade +"\n Resultado: "+novaQuantidade); // Evitar com estoque negativo if (novaQuantidade < 0) { FacesContext.getCurrentInstance().addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não há disponibilidade no estoque de " + quantidade + " itens do produto " + this.getPrd_codigo_proprio() + ".", "")); throw new IllegalArgumentException("Não há disponibilidade no estoque de " + quantidade + " itens do produto " + this.getPrd_codigo_proprio() + "."); } else { setPrd_estoque(novaQuantidade); } } else { System.out.println("Produto para baixar estoque invalido."); } }
A minha dúvida é: Parte de pedidos e itens está normal, porém, ele não ‘comitta’ no banco de dados a alteração de estoque.
Tenho que usar alguma anotação? no método ‘baixarEstoque’ usei o ‘@Transient’, porém não tive sucesso.
Obrigado a todos.
Mensagens: 1
Participantes: 1