Bom dia galera do GUJ;
Como implemento um Converter quando minha model tem chave composta?
Obrigado.
abaixo minha classe chave composta
@Embeddable
public class CompraPk implements Serializable {
private static final long serialVersionUID = 1L;
private Integer numeronota;
private Long codigofornecedor;
private Integer serie;
public CompraPk() {
}
public CompraPk(Integer numeronota, Long codigofornecedor, Integer serie) {
this.numeronota = numeronota;
this.codigofornecedor = codigofornecedor;
this.serie = serie;
}
public Integer getNumeronota() {
return numeronota;
}
public void setNumeronota(Integer numeronota) {
this.numeronota = numeronota;
}
public Long getCodigofornecedor() {
return codigofornecedor;
}
public void setCodigofornecedor(Long codigofornecedor) {
this.codigofornecedor = codigofornecedor;
}
public Integer getSerie() {
return serie;
}
public void setSerie(Integer serie) {
this.serie = serie;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigofornecedor == null) ? 0 : codigofornecedor.hashCode());
result = prime * result + ((numeronota == null) ? 0 : numeronota.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;
CompraPk other = (CompraPk) obj;
if (codigofornecedor == null) {
if (other.codigofornecedor != null)
return false;
} else if (!codigofornecedor.equals(other.codigofornecedor))
return false;
if (numeronota == null) {
if (other.numeronota != null)
return false;
} else if (!numeronota.equals(other.numeronota))
return false;
return true;
}
e esta classe de perisntencia
package br.com.sysgestao.modelo;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
public class Compra implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private CompraPk comprapk;
@ManyToOne
@JoinColumn(nullable = false)
private Fornecedor fornecedor;
@Temporal(TemporalType.DATE)
private Date dataCompra;
@Temporal(TemporalType.DATE)
private Date datadeentrada;
@Column(nullable = false, precision = 10, scale = 2)
private BigDecimal totalnota;
@Column(precision = 10, scale = 2)
private BigDecimal outradespeszas;
@Column(precision = 10, scale = 2)
private BigDecimal seguro;
@Column(precision = 10, scale = 2)
private BigDecimal valordofrete;
private BigDecimal totalproduto;
private BigDecimal desconto;
@Transient
private Float markqup;
@Fetch(FetchMode.SUBSELECT)
@OneToMany(mappedBy = "compra", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<ItensCompras> itemc = new ArrayList<>();
@OneToMany(mappedBy = "compra", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<ContaaPagar> colecaoconta = new ArrayList<>();
public Compra() {
this.valordofrete = BigDecimal.ZERO;
this.outradespeszas = BigDecimal.ZERO;
this.seguro = BigDecimal.ZERO;
}
public Fornecedor getFornecedor() {
if (fornecedor == null) {
fornecedor = new Fornecedor();
}
return fornecedor;
}
public void setFornecedor(Fornecedor fornecedor) {
this.fornecedor = fornecedor;
}
public BigDecimal getTotalnota() {
return totalnota;
}
public void setTotalnota(BigDecimal totalnota) {
this.totalnota = totalnota;
}
public BigDecimal getOutradespeszas() {
return outradespeszas;
}
public void setOutradespeszas(BigDecimal outradespeszas) {
this.outradespeszas = outradespeszas;
}
public BigDecimal getSeguro() {
return seguro;
}
public void setSeguro(BigDecimal seguro) {
this.seguro = seguro;
}
public BigDecimal getValordofrete() {
return valordofrete;
}
public void setValordofrete(BigDecimal valordofrete) {
this.valordofrete = valordofrete;
}
public List<ItensCompras> getItemc() {
return itemc;
}
public void setItemc(List<ItensCompras> itemc) {
this.itemc = itemc;
}
public CompraPk getComprapk() {
return comprapk;
}
public void setComprapk(CompraPk comprapk) {
this.comprapk = comprapk;
}
public List<ContaaPagar> getColecaoconta() {
return colecaoconta;
}
public void setColecaoconta(List<ContaaPagar> colecaoconta) {
this.colecaoconta = colecaoconta;
}
public Date getDataCompra() {
return dataCompra;
}
public void setDataCompra(Date dataCompra) {
this.dataCompra = dataCompra;
}
public Date getDatadeentrada() {
return datadeentrada;
}
public void setDatadeentrada(Date datadeentrada) {
this.datadeentrada = datadeentrada;
}
public BigDecimal getTotalproduto() {
return totalproduto;
}
public void setTotalproduto(BigDecimal totalproduto) {
this.totalproduto = totalproduto;
}
public BigDecimal getDesconto() {
return desconto;
}
public void setDesconto(BigDecimal desconto) {
this.desconto = desconto;
}
public Float getMarkqup() {
return markqup;
}
public void setMarkqup(Float markqup) {
this.markqup = markqup;
}
public List<ContaaPagar> addparcela() {
Integer numparcela = 0;
for (int pos = 0; pos < fornecedor.getCondicaoPagamento().getColecaoparcelas().size(); pos++) {
numparcela = numparcela + 1;
BigDecimal valorparcela = new BigDecimal(0.00d);
BigDecimal percentual = new BigDecimal(0.00d);
ContaaPagar contaaPagar = new ContaaPagar();
percentual = fornecedor.getCondicaoPagamento().getColecaoparcelas().get(pos).getPercentual();
percentual = percentual.divide(new BigDecimal(100d));
ContaaPk contapk = new ContaaPk();
contapk.setCodigofornecedor(fornecedor.getCodigo());
contapk.setNumparcela(numparcela);
contapk.setNumtitulo(comprapk.getNumeronota());
contaaPagar.setContaaPk(contapk);
contaaPagar.setCompra(this);
contaaPagar.setFormadepagamento(fornecedor.getCondicaoPagamento().getColecaoparcelas().get(pos).getFormadePagamento());
contaaPagar.setCondicaoPagamento(fornecedor.getCondicaoPagamento());
contaaPagar.setFornecedor(fornecedor);
contaaPagar.setNumerodaparcela(numparcela);
contaaPagar.setStatusconta(StatusConta.Aberto);
Calendar c = Calendar.getInstance();
Date data = dataCompra;
c.setTime(data);
c.add(Calendar.DATE, fornecedor.getCondicaoPagamento().getColecaoparcelas().get(pos).getDia());
data = c.getTime();
contaaPagar.setDatavencimento(data);
valorparcela = totalnota.multiply(percentual);
contaaPagar.setValoparcela(valorparcela);
contaaPagar.setValorapagar(valorparcela);
colecaoconta.add(contaaPagar);
}
return colecaoconta;
}
public List<ItensCompras> remove(ItensCompras item) {
int achou = -1;
for (int posicao = 0; posicao < itemc.size()&& achou<0 ; posicao++) {
ItensCompras itemtemp= itemc.get(posicao);
if (itemtemp.getProduto().equals(item.getProduto())) {
System.out.println(item.getProduto().getNomeproduto());
System.out.println(itemtemp.getProduto().getNomeproduto());
achou=posicao;
}
}
if (achou > -1) {
totalproduto = totalproduto.subtract(itemc.get(achou).getSubtotal());
totalnota =totalnota.subtract(itemc.get(achou).getSubtotal());
itemc.remove(achou);
}
return itemc;
}
public void remvoveconta() {
colecaoconta.clear();
}
// @Override
// public String toString() {
// return "Compra [comprapk=" + comprapk + "]";
// }
@Override
public String toString() {
return String.format("%s[comprapk=%d]", getClass().getSimpleName(),getComprapk());
}
}
método de busca por id
public Compra buscarchave (CompraPk comprapk) {
return em.find(Compra.class, comprapk);
}
