[quote=Vini Fernandes] Cara, voce precisa me mandar o SCRIPT do base de dados para saber como suas tabelas estao relacionadas para montarmos uma query do tipo:
select p.codigo from orcamento o, produto p, orcamento_produto op
where p.codigo = op.codigo_produto and o.codigo = op.codigo_orcamento
onde imagimo que orcamento_produto seja sua tabela que relacione muitos produtos com muitos orcamentos.
Ate[/quote]
Amigo Fernandes … não estou fazendo com SQL pura. estou utilizando hibernate com annotations e o relacionamento é como eu coloqueia ai em cima:
@ManyToMany
@Cascade(org.hibernate.annotations.CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List <Produto> produtos = new ArrayList<Produto>();
Abaixo a classe Produtos:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package classes;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
/**
*
* @author Renato Soares
*/
@Entity
@Table(name = "produto")
@SequenceGenerator(name = "produto_codigo_seq", sequenceName = "produto_codigo_seq")
public class Produto implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "produto_codigo_seq")
@Column(name = "codigo", nullable = false)
private int codigo;
@Column(name = "dataCadastro")
@Temporal(javax.persistence.TemporalType.DATE)
private Date dataCadastro;
@Column(name = "codigoFabricante", length = 15)
private String codigoFabricante;
@Column(name = "grupo", length = 50)
private String grupo;
@Column(name = "subgrupo", length = 50)
private String subgrupo;
@Column(name = "descricao", length = 50)
private String descricao;
@Column(name = "unidade", length = 2)
private String unidade;
@Column(name = "pesoBruto", length = 5, scale = 3)
private double pesoBruto;
@Column(name = "pesoLiquido", length = 5, scale = 3)
private double pesoLiquido;
@Column(name = "ultimaCompra")
@Temporal(javax.persistence.TemporalType.DATE)
private Date ultimaCompra;
@Column(name = "ultimaVenda")
@Temporal(javax.persistence.TemporalType.DATE)
private Date ultimaVenda;
@Column(name = "classificacaofiscal", length = 10)
private int classificacaofiscal;
@Column(name = "precoCusto", length = 7, scale = 2)
private double precoCusto;
@Column(name = "quantidadeProduto", length = 6)
private int quantidadeProduto;
@Column(name = "quantidadeMinima", length = 6)
private int quantidadeMinima;
@Column(name = "quantidadeMaxima", length = 6)
private int quantidadeMaxima;
@Column(name = "icms", length = 2)
private int icms;
@Column(name = "ipi", length = 2)
private int ipi;
@Column(name = "frete", length = 2)
private int frete;
@Column(name = "outrosCustos", length = 2)
private int outrosCustos;
@Column(name = "margemLucro", length = 5)
private int margemLucro;
@Column(name = "precoVenda", length = 7, scale = 2)
private double precoVenda;
public int getQuantidadeMaxima() {
return quantidadeMaxima;
}
public void setQuantidadeMaxima(int quantidadeMaxima) {
this.quantidadeMaxima = quantidadeMaxima;
}
public int getQuantidadeMinima() {
return quantidadeMinima;
}
public void setQuantidadeMinima(int quantidadeMinima) {
this.quantidadeMinima = quantidadeMinima;
}
public int getClassificacaofiscal() {
return classificacaofiscal;
}
public void setClassificacaofiscal(int classificacaofiscal) {
this.classificacaofiscal = classificacaofiscal;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getCodigoFabricante() {
return codigoFabricante;
}
public void setCodigoFabricante(String codigoFabricante) {
this.codigoFabricante = codigoFabricante;
}
public Date getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(Date dataCadastro) {
this.dataCadastro = dataCadastro;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getFrete() {
return frete;
}
public void setFrete(int frete) {
this.frete = frete;
}
public String getGrupo() {
return grupo;
}
public void setGrupo(String grupo) {
this.grupo = grupo;
}
public int getIcms() {
return icms;
}
public void setIcms(int icms) {
this.icms = icms;
}
public int getIpi() {
return ipi;
}
public void setIpi(int ipi) {
this.ipi = ipi;
}
public int getMargemLucro() {
return margemLucro;
}
public void setMargemLucro(int margemLucro) {
this.margemLucro = margemLucro;
}
public int getOutrosCustos() {
return outrosCustos;
}
public void setOutrosCustos(int outrosCustos) {
this.outrosCustos = outrosCustos;
}
public double getPesoBruto() {
return pesoBruto;
}
public void setPesoBruto(double pesoBruto) {
this.pesoBruto = pesoBruto;
}
public double getPesoLiquido() {
return pesoLiquido;
}
public void setPesoLiquido(double pesoLiquido) {
this.pesoLiquido = pesoLiquido;
}
public double getPrecoCusto() {
return precoCusto;
}
public void setPrecoCusto(double precoCusto) {
this.precoCusto = precoCusto;
}
public double getPrecoVenda() {
return precoVenda;
}
public void setPrecoVenda(double precoVenda) {
this.precoVenda = precoVenda;
}
public int getQuantidadeProduto() {
return quantidadeProduto;
}
public void setQuantidadeProduto(int quantidadeProduto) {
this.quantidadeProduto = quantidadeProduto;
}
public String getSubgrupo() {
return subgrupo;
}
public void setSubgrupo(String subgrupo) {
this.subgrupo = subgrupo;
}
public Date getUltimaCompra() {
return ultimaCompra;
}
public void setUltimaCompra(Date ultimaCompra) {
this.ultimaCompra = ultimaCompra;
}
public Date getUltimaVenda() {
return ultimaVenda;
}
public void setUltimaVenda(Date ultimaVenda) {
this.ultimaVenda = ultimaVenda;
}
public String getUnidade() {
return unidade;
}
public void setUnidade(String unidade) {
this.unidade = unidade;
}
}
Agora como retornar CodigoProduto, DescricaoProduto, UnidadeProduto, QuantidadeProduto, ValorUnitarioProduto e ValorTotalProduto … sem ter os metodos gets e sets na classe OrcamentoVendas … se eu utilizar dessa forma:
@Column(name = "codigoProduto")
private int codigoProduto;
@Column(name = "descricaoProduto", length = 50)
private String descricaoProduto;
@Column(name = "unidadeProduto", length = 2)
private String unidadeProduto;
@Column(name = "quantidadeProduto", length = 7, scale = 2)
private double quantidadeProduto;
@Column(name = "valorUnitarioProduto", length = 7, scale = 2)
private double valorUnitarioProduto;
@Column(name = "valorTotalProduto", length = 7, scale = 2)
private double valorTotalProduto;
//com seus gets e sets
vai pegar apenas um unico produto.
Por isso que eu fiz assim:
@ManyToMany
@Cascade(org.hibernate.annotations.CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List <Produto> produtos = new ArrayList<Produto>();
para pegar varios produtos no orcamentoVendas.
Agora no formulario de OrcamentoVendas, eu faço dessa forma para pegar a lista de produtos e salvar o orçamento no banco.
//com esse metodo eu pego os produtos
public List getProdutos() {
ProdutoDao pdao = new ProdutoDao();
List produtos = new ArrayList();
for (int i = 0; i < tableProdutos.getRowCount(); i++) {
String coluna[] = new String[tableProdutos.getColumnCount()];
for (int j = 0; j < tableProdutos.getColumnCount(); j++) {
coluna[j] = (String) tableProdutos.getValueAt(i, j);
}
try {
Produto produto = pdao.carregarPorCodigo(Integer.parseInt(coluna[0]));
produtos.add(produto);
} catch (Exception e1) {
JOptionPane.showMessageDialog(null, "Erro na manipulacao dos dados !",
"Erro", JOptionPane.ERROR_MESSAGE);
}
}
return produtos;
}
e por fim, dessa forma eu retorno o registro da pesquisa para o formulario OrcamentoVendas.
private void tableOrcamentoMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getSource() == this.tableOrcamento) {
selRow = tableOrcamento.getSelectedRow();
aux1 = String.valueOf(tableOrcamento.getValueAt(selRow, 0));
codigoOrcamentoVenda = Integer.parseInt(aux1);
try {
List<OrcamentoVenda> result = orcamentoVendaDao.carregarPorCodigoIgual(codigoOrcamentoVenda);
for (OrcamentoVenda orcamentoVenda : result) {
aux25 = orcamentoVenda.getDataOrcamento();
aux26 = orcamentoVenda.getCodigo();
aux10 = orcamentoVenda.getCodigoCliente();
aux2 = orcamentoVenda.getNomeCliente();
aux11 = orcamentoVenda.getCodigoProduto();
aux3 = orcamentoVenda.getDescricaoProduto();
aux4 = orcamentoVenda.getUnidadeProduto();
aux12 = orcamentoVenda.getQuantidadeProduto();
aux18 = orcamentoVenda.getValorUnitarioProduto();
aux19 = orcamentoVenda.getValorTotalProduto();
aux22 = orcamentoVenda.getValorTotalProdutos();
aux23 = orcamentoVenda.getValorTotalServicos();
aux24 = orcamentoVenda.getValorTotalOrcamento();
aux15 = orcamentoVenda.getCodigoCondicaoPagamento();
aux6 = orcamentoVenda.getDescricaCondicaoPagamento();
aux16 = orcamentoVenda.getQuantidadeParcelas();
aux7 = orcamentoVenda.getVencimento();
aux8 = orcamentoVenda.getDataEntrega();
aux17 = orcamentoVenda.getPrazoValidade();
aux9 = orcamentoVenda.getObservacao();
}
} catch (Exception ex) {
Logger.getLogger(pesquisaOrcamentoVenda.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
o problema esta aqui:
aux11 = orcamentoVenda.getCodigoProduto();
aux3 = orcamentoVenda.getDescricaoProduto();
aux4 = orcamentoVenda.getUnidadeProduto();
aux12 = orcamentoVenda.getQuantidadeProduto();
aux18 = orcamentoVenda.getValorUnitarioProduto();
aux19 = orcamentoVenda.getValorTotalProduto();
Como eu posso querer pegar , sendo que não tem os metodos gets la na classe OrcamentoVenda !!! Sendo que na classe tem os gets e sets do List Produto … Preciso que retorne os produtos que ja foram salvos no orçamento X por exemplo.
Obrigado … Por Favor, Aguardo Retorno … Me Ajudem !!!