Estou com um problema na hora de dar baixa nao consigo diminuir o estoque,
minha ideia e pegar os itens temporarios e quando chamar o metodo salvar na venda bean pegar os produtos e subtrair pelos itens que são temporario.
segue abaixo as minhas clsses
Venda dao
package com.jorgelmg.estoque.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.jorgelmg.estoque.domain.Venda;
import com.jorgelmg.estoque.filter.VendaFilter;
import com.jorgelmg.estoque.util.HibernateUtil;
public class VendaDAO {
public Long salvar(Venda venda) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
Long codigo = null;
try {
transacao = sessao.beginTransaction();
codigo = (Long) sessao.save(venda);
transacao.commit();
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback();
}
throw ex;
} finally {
sessao.close();
}
return codigo;
}
@SuppressWarnings("unchecked")
public List<Venda> listar() {
Session sessao = HibernateUtil.getSessionFactory().openSession();
List<Venda> vendas = null;
try {
Query consulta = sessao.getNamedQuery("Venda.listar");
vendas = consulta.list();
} catch (RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return vendas;
}
public Venda buscarPorCodigo(Long codigo) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Venda venda = null;
try {
Query consulta = sessao.getNamedQuery("Venda.buscarPorCodigo");
consulta.setLong("codigo", codigo);
venda = (Venda) consulta.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return venda;
}
public void excluir(Venda venda) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.delete(venda);
transacao.commit();
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback();
}
throw ex;
} finally {
sessao.close();
}
}
public void editar(Venda venda) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.update(venda);
transacao.commit();
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback();
}
throw ex;
} finally {
sessao.close();
}
}
@SuppressWarnings("unchecked")
public List<Venda> buscar(VendaFilter filtro) {
List<Venda> vendas = null;
StringBuilder sql = new StringBuilder();
sql.append("SELECT venda FROM Venda venda ");
if (filtro.getDataInicial() != null && filtro.getDataFinal() != null) {
sql.append("WHERE venda.horario BETWEEN :dataInicial AND :dataFinal ");
}
sql.append("ORDER BY venda.horario ");
Session sessao = HibernateUtil.getSessionFactory().openSession();
try {
Query consulta = sessao.createQuery(sql.toString());
if (filtro.getDataInicial() != null && filtro.getDataFinal() != null) {
consulta.setDate("dataInicial", filtro.getDataInicial());
consulta.setDate("dataFinal", filtro.getDataFinal());
}
vendas = consulta.list();
} catch (
RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return vendas;
}
}
venda bean
package com.jorgelmg.estoque.bean;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import com.jorgelmg.estoque.dao.FuncionarioDAO;
import com.jorgelmg.estoque.dao.ItemDAO;
import com.jorgelmg.estoque.dao.ProdutoDAO;
import com.jorgelmg.estoque.dao.VendaDAO;
import com.jorgelmg.estoque.domain.Funcionario;
import com.jorgelmg.estoque.domain.Item;
import com.jorgelmg.estoque.domain.Produto;
import com.jorgelmg.estoque.domain.Venda;
import com.jorgelmg.estoque.filter.VendaFilter;
import com.jorgelmg.estoque.util.FacesUtil;
@ManagedBean
@ViewScoped
public class VendaBean {
private List<Produto> listaProdutos;
private List<Produto> listaProdutosFiltrados;
private Venda vendaCadastro;
private List<Item> listaItens;
@ManagedProperty(value = "#{autenticacaoBean}")
private AutenticacaoBean autenticacaoBean;
private VendaFilter filtro;
private List<Venda> listaVendasFiltradas;
public List<Produto> getListaProdutos() {
return listaProdutos;
}
public void setListaProdutos(List<Produto> listaProdutos) {
this.listaProdutos = listaProdutos;
}
public List<Produto> getListaProdutosFiltrados() {
return listaProdutosFiltrados;
}
public void setListaProdutosFiltrados(List<Produto> listaProdutosFiltrados) {
this.listaProdutosFiltrados = listaProdutosFiltrados;
}
public Venda getVendaCadastro() {
if (vendaCadastro == null) {
vendaCadastro = new Venda();
vendaCadastro.setValor(new BigDecimal("0.00"));
vendaCadastro.setQuantidadeTotal(0);
}
return vendaCadastro;
}
public void setVendaCadastro(Venda vendaCadastro) {
this.vendaCadastro = vendaCadastro;
}
public List<Item> getListaItens() {
if (listaItens == null) {
listaItens = new ArrayList<>();
}
return listaItens;
}
public void setListaItens(List<Item> listaItens) {
this.listaItens = listaItens;
}
public AutenticacaoBean getAutenticacaoBean() {
return autenticacaoBean;
}
public void setAutenticacaoBean(AutenticacaoBean autenticacaoBean) {
this.autenticacaoBean = autenticacaoBean;
}
public VendaFilter getFiltro() {
if (filtro == null) {
filtro = new VendaFilter();
}
return filtro;
}
public void setFiltro(VendaFilter filtro) {
this.filtro = filtro;
}
public List<Venda> getListaVendasFiltradas() {
return listaVendasFiltradas;
}
public void setListaVendasFiltradas(List<Venda> listaVendasFiltradas) {
this.listaVendasFiltradas = listaVendasFiltradas;
}
// metodo pra carregar lista produtos no venda no xhtml
public void carregarProdutos() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
listaProdutos = produtoDAO.listar();
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar listar produtos:" + ex.getMessage());
}
}
// metodo para adiconar produto a venda temporario
public void adicionar(Produto produto) {
if (produto.getQuantidade() > 0) {
int posicaoEncontrada = -1;
for (int pos = 0; pos < listaItens.size() && posicaoEncontrada < 0; pos++) {
Item itemTemp = listaItens.get(pos);
if (itemTemp.getProduto().equals(produto)) {
posicaoEncontrada = pos;
}
}
Item item = new Item();
item.setProduto(produto);
if (posicaoEncontrada < 0) {
item.setQuantidade(1);
item.setValor(produto.getPreco());
listaItens.add(item);
} else {
Item itemTemp = listaItens.get(posicaoEncontrada);
item.setQuantidade(itemTemp.getQuantidade() + 1);
item.setValor(produto.getPreco().multiply(new BigDecimal(item.getQuantidade())));
listaItens.set(posicaoEncontrada, item);
}
// add e usado para somar ja que o + nao soma bigdecimal
vendaCadastro.setValor(vendaCadastro.getValor().add(produto.getPreco()));
// soma mais 1 na quantidade total da venda
vendaCadastro.setQuantidadeTotal(vendaCadastro.getQuantidadeTotal() + 1);
}
}
public void remover(Item item) {
int posicaoEncontrada = -1;
for (int pos = 0; pos < listaItens.size() && posicaoEncontrada < 0; pos++) {
Item itemTemp = listaItens.get(pos);
if (itemTemp.getProduto().equals(item.getProduto())) {
posicaoEncontrada = pos;
}
}
if (posicaoEncontrada > -1) {
listaItens.remove(posicaoEncontrada);
vendaCadastro.setValor(vendaCadastro.getValor().subtract(item.getValor()));
vendaCadastro.setQuantidadeTotal(vendaCadastro.getQuantidadeTotal() - item.getQuantidade());
}
}
public void carregarDadosVenda() {
vendaCadastro.setHorario(new Date());
FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
Funcionario funcionario = funcionarioDAO.buscarPorCodigo(autenticacaoBean.getFuncionarioLogado().getCodigo());
vendaCadastro.setFuncionario(funcionario);
}
public void salvar() {
try {
VendaDAO vendaDAO = new VendaDAO();
Long codigoVenda = vendaDAO.salvar(vendaCadastro);
Venda vendaFK = vendaDAO.buscarPorCodigo(codigoVenda);
for (Item item : listaItens) {
item.setVenda(vendaFK);
ItemDAO itemDAO = new ItemDAO();
itemDAO.salvar(item);
}
vendaCadastro = new Venda();
vendaCadastro.setValor(new BigDecimal("0.00"));
listaItens = new ArrayList<Item>();
FacesUtil.adicionarMsgInfo("Venda salva com sucesso");
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar salvar a venda:" + ex.getMessage());
}
}
public void buscar() {
try {
VendaDAO vendaDAO = new VendaDAO();
listaVendasFiltradas = vendaDAO.buscar(filtro);
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar buscar uma venda:" + ex.getMessage());
}
}
}
Venda modelo
package com.jorgelmg.estoque.domain;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
@Entity
@Table(name = "tbl_vendas")
@NamedQueries({ @NamedQuery(name = "Venda.listar", query = "SELECT venda FROM Venda venda"),
@NamedQuery(name = "Venda.buscarPorCodigo", query = "SELECT venda FROM Venda venda WHERE venda.codigo = :codigo") })
public class Venda {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ven_codigo")
private Long codigo;
@Temporal(value = TemporalType.TIMESTAMP)
@Column(name = "ven_horrio", nullable = false)
private Date horario;
@Column(name = "ven_valor_total", precision = 7, scale = 2, nullable = false)
private BigDecimal valor;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tbl_funcionarios_fun_codigo", referencedColumnName = "fun_codigo", nullable = false)
private Funcionario funcionario;
@Transient
private Integer quantidadeTotal;
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public Date getHorario() {
return horario;
}
public void setHorario(Date horario) {
this.horario = horario;
}
public BigDecimal getValor() {
return valor;
}
public void setValor(BigDecimal valor) {
this.valor = valor;
}
public Funcionario getFuncionario() {
return funcionario;
}
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
public Integer getQuantidadeTotal() {
return quantidadeTotal;
}
public void setQuantidadeTotal(Integer quantidadeTotal) {
this.quantidadeTotal = quantidadeTotal;
}
@Override
public String toString() {
return "Venda [codigo=" + codigo + ", horario=" + horario + ", valor=" + valor + ", funcionario=" + funcionario
+ "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Venda other = (Venda) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
}
Item
package com.jorgelmg.estoque.domain;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name = "tbl_itens")
@NamedQueries({ @NamedQuery(name = "Item.listar", query = "SELECT item FROM Item item"),
@NamedQuery(name = "Item.buscarPorCodigo", query = "SELECT item FROM Item item WHERE item.codigo = :codigo") })
public class Item {
// classe com duas chaves estrangeiras
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ite_codigo")
private Long codigo;
@Column(name = "ite_valor_parcial", precision = 7, scale = 2, nullable = false)
private BigDecimal valor;
@Column(name = " ite_quantidade", nullable = false)
private Integer quantidade;
// chaves estrangeira
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tbl_vendas_ven_codigo", referencedColumnName = "ven_codigo", nullable = false)
private Venda venda;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tbl_produtos_pro_codigo", referencedColumnName = "pro_codigo", nullable = false)
private Produto produto;
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public BigDecimal getValor() {
return valor;
}
public void setValor(BigDecimal valor) {
this.valor = valor;
}
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
public Venda getVenda() {
return venda;
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
@Override
public String toString() {
return "Item [codigo=" + codigo + ", valor=" + valor + ", quantidade=" + quantidade + ", venda=" + venda
+ ", produto=" + produto + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Item other = (Item) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
}
produto dao
package com.jorgelmg.estoque.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.jorgelmg.estoque.domain.Produto;
import com.jorgelmg.estoque.util.HibernateUtil;
public class ProdutoDAO {
public void salvar(Produto produto) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.save(produto);
transacao.commit();
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback();
}
throw ex;
} finally {
sessao.close();
}
}
@SuppressWarnings("unchecked")
public List<Produto> listar() {
Session sessao = HibernateUtil.getSessionFactory().openSession();
List<Produto> produtos = null;
try {
Query consulta = sessao.getNamedQuery("Produto.listar");
produtos = consulta.list();
} catch (RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return produtos;
}
public Produto buscarPorCodigo(Long codigo) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Produto produto = null;
try {
Query consulta = sessao.getNamedQuery("Produto.buscarPorCodigo");
consulta.setLong("codigo", codigo);
produto = (Produto)consulta.uniqueResult();
} catch (RuntimeException ex) {
throw ex;
} finally {
sessao.close();
}
return produto;
}
public void excluir(Produto produto) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.delete(produto);
transacao.commit();
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback();
}
throw ex;
} finally {
sessao.close();
}
}
public void editar(Produto produto) {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.update(produto);
transacao.commit();
} catch (RuntimeException ex) {
if (transacao != null) {
transacao.rollback();
}
throw ex;
} finally {
sessao.close();
}
}
}
package com.jorgelmg.estoque.bean;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import com.jorgelmg.estoque.dao.FabricanteDAO;
import com.jorgelmg.estoque.dao.ProdutoDAO;
import com.jorgelmg.estoque.domain.Fabricante;
import com.jorgelmg.estoque.domain.Produto;
import com.jorgelmg.estoque.util.FacesUtil;
@ManagedBean
@ViewScoped
public class ProdutoBean {
private Produto produtoCadastro;
private List<Produto> listaProdutos;
private List<Produto> listaProdutosFiltrados;
private String acao;
private Long codigo;
private List<Fabricante> listaFabricantes;
// get set
public Produto getProdutoCadastro() {
return produtoCadastro;
}
public void setProdutoCadastro(Produto produtoCadastro) {
this.produtoCadastro = produtoCadastro;
}
public List<Produto> getListaProdutos() {
return listaProdutos;
}
public void setListaProdutos(List<Produto> listaProdutos) {
this.listaProdutos = listaProdutos;
}
public List<Produto> getListaProdutosFiltrados() {
return listaProdutosFiltrados;
}
public void setListaProdutosFiltrados(List<Produto> listaProdutosFiltrados) {
this.listaProdutosFiltrados = listaProdutosFiltrados;
}
public String getAcao() {
return acao;
}
public void setAcao(String acao) {
this.acao = acao;
}
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public List<Fabricante> getListaFabricantes() {
return listaFabricantes;
}
public void setListaFabricantes(List<Fabricante> listaFabricantes) {
this.listaFabricantes = listaFabricantes;
}
// metodos
public void novo() {
produtoCadastro = new Produto();
}
public void salvar() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
produtoDAO.salvar(produtoCadastro);
produtoCadastro = new Produto();
FacesUtil.adicionarMsgInfo("Produto adicionado com sucesso!");
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar adicionar um produto:" + ex.getMessage());
}
}
// metodo pra carregar lista no xhtml
public void carregarPesquisa() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
listaProdutos = produtoDAO.listar();
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar listar produtos:" + ex.getMessage());
}
}
public void carregarCadastro() {
try {
if (codigo != null) {
ProdutoDAO produtoDAO = new ProdutoDAO();
produtoCadastro = produtoDAO.buscarPorCodigo(codigo);
}
// para tirar o if do get, usa-se esse else
else {
produtoCadastro = new Produto();
}
//carrega os fabricantes
FabricanteDAO fabricanteDAO = new FabricanteDAO();
listaFabricantes = fabricanteDAO.listar();
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar obter os dados dos produtos:" + ex.getMessage());
}
}
public void excluir() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
produtoDAO.excluir(produtoCadastro);
FacesUtil.adicionarMsgInfo("Produto removido com sucesso!");
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar remover produto:" + ex.getMessage());
}
}
public void editar() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
produtoDAO.editar(produtoCadastro);
FacesUtil.adicionarMsgInfo("Produto editado com sucesso!");
} catch (RuntimeException ex) {
FacesUtil.adicionarMsgErro("Erro ao tentar editar os dados do produto:" + ex.getMessage());
}
}
}
produto modelo
package com.jorgelmg.estoque.domain;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Digits;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name = "tbl_produtos")
@NamedQueries({ @NamedQuery(name = "Produto.listar", query = "SELECT produto FROM Produto produto"),
@NamedQuery(name = "Produto.buscarPorCodigo", query = "SELECT produto FROM Produto produto WHERE codigo = :codigo") })
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "pro_codigo")
private Long codigo;
@Column(name = "pro_descricao", length = 50, nullable = false)
@NotEmpty(message = "O campo descrição é obrigatório.")
@Size(min = 4, max = 500, message = "Informe uma descrição de 4 a 500 caracteres.")
private String descricao;
@NotNull(message = "O campo preço é obrigatório.")
@DecimalMin(value = "0.00", message = "Informe um valor igual ou maior que zero para o campo preço.")
@DecimalMax(value = "99999.99", message = "Informe um valor menor que 100 mil para o campo preço.")
@Digits(integer=5 , fraction=2 , message="Informe um valor valído para o campo preço.")
@Column(name = "pro_preco", precision = 7, scale = 2, nullable = false)
private BigDecimal preco;
@NotNull(message = "O campo quantidade é obrigatório.")
@Min(value = 0, message = "Informe um valor igual ou maior que zero para o campo quantidade.")
@Max(value = 9999, message = "Informe um valor menor que 10 mil para o campo quantidade.")
@Column(name = "pro_quantidade", nullable = false)
private Integer quantidade;
@NotNull(message = "O campo fabricante é obrigatório")
@ManyToOne(fetch = FetchType.EAGER) // quando carrega os produtos o fabricante vem junto
@JoinColumn(name = "tbl_fabricantes_fab_codigo", referencedColumnName = "fab_codigo")
private Fabricante fabricante;
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public BigDecimal getPreco() {
return preco;
}
public void setPreco(BigDecimal preco) {
this.preco = preco;
}
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
public Fabricante getFabricante() {
return fabricante;
}
public void setFabricante(Fabricante fabricante) {
this.fabricante = fabricante;
}
@Override
public String toString() {
return "Produto [codigo=" + codigo + ", descricao=" + descricao + ", preco=" + preco + ", quantidade="
+ quantidade + ", fabricante=" + fabricante + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Produto other = (Produto) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
}
Desde já agradeço o retorno.
Nao consigo diminuir o estoque Java web primefaces hibernate jsf
J
Criado 1 de dezembro de 2019
Respostas 0
Participantes 1
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo