Good morning guys!
I have the following entities:
package br.com.sistema.entidade;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="TB_Carrinho")
@IdClass(CarrinhoDeComprasID.class)
public class CarrinhoDeCompras {
@Id
@ManyToOne
@JoinColumn(name="id_produto")
private Produto produto;
@Id
@ManyToOne
@JoinColumn(name="id_venda")
private Venda venda;
private Integer quantidade;
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public Venda getVenda() {
return venda;
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public Integer getQuantidade() {
return quantidade;
}
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((produto == null) ? 0 : produto.hashCode());
result = prime * result
+ ((quantidade == null) ? 0 : quantidade.hashCode());
result = prime * result + ((venda == null) ? 0 : venda.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;
CarrinhoDeCompras other = (CarrinhoDeCompras) obj;
if (produto == null) {
if (other.produto != null)
return false;
} else if (!produto.equals(other.produto))
return false;
if (quantidade == null) {
if (other.quantidade != null)
return false;
} else if (!quantidade.equals(other.quantidade))
return false;
if (venda == null) {
if (other.venda != null)
return false;
} else if (!venda.equals(other.venda))
return false;
return true;
}
}
package br.com.sistema.entidade;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="TB_PRODUTO")
public class Produto implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
private String descricao;
@Column(name="data_cadastro")
@Temporal(TemporalType.DATE)
private Date dataCadastro;
private Double valor;
@Column(name="quantidade_vendida")
private Integer quantidadeVendida = 0;
//Construtores
public Produto() {
}
public Produto(String descricao, Date dataCadastro,
Double valor) {
this.descricao = descricao;
this.dataCadastro = dataCadastro;
this.valor = valor;
}
// Get's e Set's
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public Integer getQuantidadeVendida() {
return quantidadeVendida;
}
public void setQuantidadeVendida(Integer quantidadeVendida) {
this.quantidadeVendida = quantidadeVendida;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((dataCadastro == null) ? 0 : dataCadastro.hashCode());
result = prime * result
+ ((descricao == null) ? 0 : descricao.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime
* result
+ ((quantidadeVendida == null) ? 0 : quantidadeVendida
.hashCode());
result = prime * result + ((valor == null) ? 0 : valor.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 (dataCadastro == null) {
if (other.dataCadastro != null)
return false;
} else if (!dataCadastro.equals(other.dataCadastro))
return false;
if (descricao == null) {
if (other.descricao != null)
return false;
} else if (!descricao.equals(other.descricao))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (quantidadeVendida == null) {
if (other.quantidadeVendida != null)
return false;
} else if (!quantidadeVendida.equals(other.quantidadeVendida))
return false;
if (valor == null) {
if (other.valor != null)
return false;
} else if (!valor.equals(other.valor))
return false;
return true;
}
}
package br.com.sistema.entidade;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="TB_VENDA")
public class Venda implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="venda_id")
private Integer vendaId;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_cliente", nullable=false) // No banco esse campo vai se chamar id_cliente | Não pode ser nulo
private Cliente cliente;
@OneToMany(mappedBy="venda")
private List<CarrinhoDeCompras> produto;
@Column(name="data_venda")
@Temporal(TemporalType.DATE)
private Date dataVenda;
private Double valorTotal;
@Column(name="flag_venda_ativa")
private Integer flagVendaAtiva;
//Construtor
public Venda(){
}
public Venda(List<CarrinhoDeCompras> p, Cliente c){
this.produto = p;
this.cliente = c;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public List<CarrinhoDeCompras> getProduto() {
return produto;
}
public void setProduto(List<CarrinhoDeCompras> produto) {
this.produto = produto;
}
public Date getDataVenda() {
return dataVenda;
}
public void setDataVenda(Date dataVenda) {
this.dataVenda = dataVenda;
}
public Integer getVendaId() {
return vendaId;
}
public void setVendaId(Integer vendaId) {
this.vendaId = vendaId;
}
public Double getValorTotal() {
return valorTotal;
}
public void setValorTotal(Double valorTotal) {
this.valorTotal = valorTotal;
}
public Integer getFlagVendaAtiva() {
return flagVendaAtiva;
}
public void setFlagVendaAtiva(Integer flagVendaAtiva) {
this.flagVendaAtiva = flagVendaAtiva;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((cliente == null) ? 0 : cliente.hashCode());
result = prime * result
+ ((dataVenda == null) ? 0 : dataVenda.hashCode());
result = prime * result
+ ((flagVendaAtiva == null) ? 0 : flagVendaAtiva.hashCode());
result = prime * result + ((produto == null) ? 0 : produto.hashCode());
result = prime * result
+ ((valorTotal == null) ? 0 : valorTotal.hashCode());
result = prime * result + ((vendaId == null) ? 0 : vendaId.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 (cliente == null) {
if (other.cliente != null)
return false;
} else if (!cliente.equals(other.cliente))
return false;
if (dataVenda == null) {
if (other.dataVenda != null)
return false;
} else if (!dataVenda.equals(other.dataVenda))
return false;
if (flagVendaAtiva == null) {
if (other.flagVendaAtiva != null)
return false;
} else if (!flagVendaAtiva.equals(other.flagVendaAtiva))
return false;
if (produto == null) {
if (other.produto != null)
return false;
} else if (!produto.equals(other.produto))
return false;
if (valorTotal == null) {
if (other.valorTotal != null)
return false;
} else if (!valorTotal.equals(other.valorTotal))
return false;
if (vendaId == null) {
if (other.vendaId != null)
return false;
} else if (!vendaId.equals(other.vendaId))
return false;
return true;
}
}
What is the scolding that is happening ... When I run the save method:
@Override
public void salvar(Object obj){
try {
abrirTransacao();
this.em.persist(obj);
fecharECommitarTransacao();
} catch (Exception e) {
System.out.println(e.getMessage());
rollback();
}
}
package br.com.sistema.entidade;
import java.io.Serializable;
public class CarrinhoDeComprasID implements Serializable{
private int produto;
private int venda;
public int getProduto() {
return produto;
}
public void setProduto(int produto) {
this.produto = produto;
}
public int getVenda() {
return venda;
}
public void setVenda(int venda) {
this.venda = venda;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + produto;
result = prime * result + venda;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CarrinhoDeComprasID other = (CarrinhoDeComprasID) obj;
if (produto != other.produto)
return false;
if (venda != other.venda)
return false;
return true;
}
}
It only saves the sale object without the references, ie saved in the Sales table but the Cart is empty.
Does anyone have any solutions or ideas for this problem?
Thank you for your attention.