DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 16/5/2011 10:46:09 PM

Conforme pedido, estas são minhas classes. Desde já abrigado!

Classe Produto


package treinamento.entidade;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author nsouza
 */
@Entity
@Table(name = "PRODUTO")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Produto.findAll", query = "SELECT p FROM Produto p"),
    @NamedQuery(name = "Produto.findByIdProduto", query = "SELECT p FROM Produto p WHERE p.idProduto = :idProduto"),
    @NamedQuery(name = "Produto.findByNome", query = "SELECT p FROM Produto p WHERE p.nome = :nome"),
    @NamedQuery(name = "Produto.findByVlrUnitario", query = "SELECT p FROM Produto p WHERE p.vlrUnitario = :vlrUnitario"),
    @NamedQuery(name = "Produto.findByQtdeEstoque", query = "SELECT p FROM Produto p WHERE p.qtdeEstoque = :qtdeEstoque")})
public class Produto implements Serializable {
    @OneToMany(mappedBy = "idProduto")
    private Collection<Saida> saidaCollection;
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID_PRODUTO")
    private Integer idProduto;
   
    @Column(name = "NOME")
    private String nome;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    
    @Column(name = "VLR_UNITARIO")
    private Float vlrUnitario;
    
    @Column(name = "QTDE_ESTOQUE")
    private Integer qtdeEstoque;
    
    @JoinColumn(name = "IDFORN", referencedColumnName = "IDFORN")
    @ManyToOne
    private Fornecedor idforn;

    public Produto() {
    }

    public Produto(Integer idProduto) {
        this.idProduto = idProduto;
    }

    public Integer getIdProduto() {
        return idProduto;
    }

    public void setIdProduto(Integer idProduto) {
        this.idProduto = idProduto;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Float getVlrUnitario() {
        return vlrUnitario;
    }

    public void setVlrUnitario(Float vlrUnitario) {
        this.vlrUnitario = vlrUnitario;
    }

    public Integer getQtdeEstoque() {
        return qtdeEstoque;
    }

    public void setQtdeEstoque(Integer qtdeEstoque) {
        this.qtdeEstoque = qtdeEstoque;
    }

    public Fornecedor getIdforn() {
        return idforn;
    }

    public void setIdforn(Fornecedor idforn) {
        this.idforn = idforn;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProduto != null ? idProduto.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Produto)) {
            return false;
        }
        Produto other = (Produto) object;
        if ((this.idProduto == null && other.idProduto != null) || (this.idProduto != null && !this.idProduto.equals(other.idProduto))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "treinamento.entidade.Produto[ idProduto=" + idProduto + " ]";
    }

    @XmlTransient
    public Collection<Saida> getSaidaCollection() {
        return saidaCollection;
    }

    public void setSaidaCollection(Collection<Saida> saidaCollection) {
        this.saidaCollection = saidaCollection;
    }
    
}

Classe fornecedor
package treinamento.entidade;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author nsouza
 */
@Entity
@Table(name = "FORNECEDOR")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Fornecedor.findAll", query = "SELECT f FROM Fornecedor f"),
    @NamedQuery(name = "Fornecedor.findByIdforn", query = "SELECT f FROM Fornecedor f WHERE f.idforn = :idforn"),
    @NamedQuery(name = "Fornecedor.findByNome", query = "SELECT f FROM Fornecedor f WHERE f.nome = :nome"),
    @NamedQuery(name = "Fornecedor.findByEndereco", query = "SELECT f FROM Fornecedor f WHERE f.endereco = :endereco"),
    @NamedQuery(name = "Fornecedor.findByNumero", query = "SELECT f FROM Fornecedor f WHERE f.numero = :numero"),
    @NamedQuery(name = "Fornecedor.findByComplemento", query = "SELECT f FROM Fornecedor f WHERE f.complemento = :complemento"),
    @NamedQuery(name = "Fornecedor.findByBairro", query = "SELECT f FROM Fornecedor f WHERE f.bairro = :bairro"),
    @NamedQuery(name = "Fornecedor.findByCidade", query = "SELECT f FROM Fornecedor f WHERE f.cidade = :cidade"),
    @NamedQuery(name = "Fornecedor.findByInscEstadual", query = "SELECT f FROM Fornecedor f WHERE f.inscEstadual = :inscEstadual"),
    @NamedQuery(name = "Fornecedor.findByTelefone", query = "SELECT f FROM Fornecedor f WHERE f.telefone = :telefone"),
    @NamedQuery(name = "Fornecedor.findByEmail", query = "SELECT f FROM Fornecedor f WHERE f.email = :email")})
public class Fornecedor implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "IDFORN")
    private Integer idforn;
    @Column(name = "NOME")
    private String nome;
    @Column(name = "ENDERECO")
    private String endereco;
    @Column(name = "NUMERO")
    private Integer numero;
    @Column(name = "COMPLEMENTO")
    private String complemento;
    
    @Column(name = "BAIRRO")
    private String bairro;
    
    @Column(name = "CIDADE")
    private String cidade;
    
    @Column(name = "INSC_ESTADUAL")
    private Integer inscEstadual;
    
    @Column(name = "TELEFONE")
    private String telefone;
    
    @Column(name = "EMAIL")
    private String email;
    
    @OneToMany(mappedBy = "idforn")
    private Collection<Produto> produtoCollection;

    public Fornecedor() {
    }

    public Fornecedor(Integer idforn) {
        this.idforn = idforn;
    }

    public Integer getIdforn() {
        return idforn;
    }

    public void setIdforn(Integer idforn) {
        this.idforn = idforn;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public Integer getNumero() {
        return numero;
    }

    public void setNumero(Integer numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public Integer getInscEstadual() {
        return inscEstadual;
    }

    public void setInscEstadual(Integer inscEstadual) {
        this.inscEstadual = inscEstadual;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @XmlTransient
    public Collection<Produto> getProdutoCollection() {
        return produtoCollection;
    }

    public void setProdutoCollection(Collection<Produto> produtoCollection) {
        this.produtoCollection = produtoCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idforn != null ? idforn.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Fornecedor)) {
            return false;
        }
        Fornecedor other = (Fornecedor) object;
        if ((this.idforn == null && other.idforn != null) || (this.idforn != null && !this.idforn.equals(other.idforn))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "treinamento.entidade.Fornecedor[ idforn=" + idforn + " ]";
    }
    
}
 Testes

@Test
    public void testAddProduto() throws Exception {
        System.out.println("addProduto");
       
        
        Fornecedor forn = new Fornecedor();
        forn.setNome("Andorra");
        forn.setEndereco("romano cruz");
        forn.setNumero(2201);
        forn.setComplemento("apt 21");
        forn.setBairro("bairu");
        forn.setCidade("caatinga");
        forn.setInscEstadual(97143000);
        forn.setTelefone("323327656");
        forn.setEmail("mario@gmail.com");
        FornecedorDao instanceFornecedor = new FornecedorDao();
        instanceFornecedor.addFornecedor(forn);

        
        
        Produto prd = new Produto();
        prd.setIdforn(instanceFornecedor.getFornecedor(2));
        prd.setNome("camisa");
        prd.setVlrUnitario(10f);
        prd.setQtdeEstoque(50);        
        ProdutoDao instance = new ProdutoDao();
        instance.addProduto(prd);
        
       
    }


Mensagem de erro:

[CODE]
Testsuite: treinamento.dao.ProdutoDaoTest
addProduto
Error to try 0 with value treinamento.entidade.Fornecedor[ idforn=2 ]
populateProdutoInfo
Tests run: 2, Failures: 0, Errors: 2, Time elapsed: 1,769 sec

------------- Standard Output ---------------
addProduto
Error to try 0 with value treinamento.entidade.Fornecedor[ idforn=2 ]
populateProdutoInfo
------------- ---------------- ---------------
Testcase: testAddProduto(treinamento.dao.ProdutoDaoTest): Caused an ERROR
Parâmetro IN ou OUT ausente do índice:: 1
java.sql.SQLException: Parâmetro IN ou OUT ausente do índice:: 1
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1821)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3571)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at treinamento.dao.GenericaDao.executeCommand(GenericaDao.java:63)
at treinamento.dao.ProdutoDao.addProduto(ProdutoDao.java:31)
at treinamento.dao.ProdutoDaoTest.testAddProduto(ProdutoDaoTest.java:73)


Testcase: testPopulateProdutoInfo(treinamento.dao.ProdutoDaoTest): Caused an ERROR
null
java.lang.NullPointerException
at treinamento.dao.ProdutoDao.populateProdutoInfo(ProdutoDao.java:67)
at treinamento.dao.ProdutoDaoTest.testPopulateProdutoInfo(ProdutoDaoTest.java:142)


Test treinamento.dao.ProdutoDaoTest FAILED
test:
Deleting: /tmp/TEST-treinamento.dao.ProdutoDaoTest.xml
BUILD SUCCESSFUL (total time: 2 seconds)


[/CODE]
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 17/5/2011 08:47:09 AM

Já percebi que idFornecedor realmente é um objeto fornecedor. (seria interessante depois alterar na classe Produto, com o atributo desse modo gera dúvida, não é bom quando se trabalha em equipe)

Bom vamos ao erro, o que está acontecendo é um nullpointer nas Classes ProdutoDao e ProdutoDaoTest, mais especificamente nas linhas:


at treinamento.dao.ProdutoDao.populateProdutoInfo(ProdutoDao.java:67)
at treinamento.dao.ProdutoDaoTest.testPopulateProdutoInfo(ProdutoDaoTest.java:142)


Verifica elas, e caso não entenda  erro, posta elas aqui.


att Davi
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 17/5/2011 09:32:20 AM

Outra duvida é:
O que tenho que passar dentro do parametro no lugar do "2"?
 
prd.setIdforn(instanceFornecedor.getFornecedor(2));
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 17/5/2011 09:42:17 AM

Teriamos que ver a classe, pois esse método é de FornecedorDao:


instanceFornecedor.getFornecedor(2)


Att Davi
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 17/5/2011 09:59:38 AM

Davi, a classe fornecedor esta no 1 post.
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 17/5/2011 10:24:57 AM

Não cara se vc perceber é FornecedorDao.
Fornecedor está ok.
Se notar
instanceFornecedor é um FornecedorDao

Att Davi
PJava
 


País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1443
 Postado em: 17/5/2011 06:51:43 PM

Uma pergunta em cima de seu post. Eu estou aprendendo java pra valer e gostaria de saber o que significa isso:
#Código
@XmlRootElement --> Essa linha e as de baixo
@NamedQueries({
    @NamedQuery(name = "Fornecedor.findAll", query = "SELECT f FROM Fornecedor f"),
    @NamedQuery(name = "Fornecedor.findByIdforn", query = "SELECT f FROM Fornecedor f WHERE f.idforn = :idforn"),
    @NamedQuery(name = "Fornecedor.findByNome", query = "SELECT f FROM Fornecedor f WHERE f.nome = :nome"),
    @NamedQuery(name = "Fornecedor.findByEndereco", query = "SELECT f FROM Fornecedor f WHERE f.endereco = :endereco"),
    @NamedQuery(name = "Fornecedor.findByNumero", query = "SELECT f FROM Fornecedor f WHERE f.numero = :numero"),
    @NamedQuery(name = "Fornecedor.findByComplemento", query = "SELECT f FROM Fornecedor f WHERE f.complemento = :complemento"),
    @NamedQuery(name = "Fornecedor.findByBairro", query = "SELECT f FROM Fornecedor f WHERE f.bairro = :bairro"),
    @NamedQuery(name = "Fornecedor.findByCidade", query = "SELECT f FROM Fornecedor f WHERE f.cidade = :cidade"),
    @NamedQuery(name = "Fornecedor.findByInscEstadual", query = "SELECT f FROM Fornecedor f WHERE f.inscEstadual = :inscEstadual"),
    @NamedQuery(name = "Fornecedor.findByTelefone", query = "SELECT f FROM Fornecedor f WHERE f.telefone = :telefone"),
    @NamedQuery(name = "Fornecedor.findByEmail", query = "SELECT f FROM Fornecedor f WHERE f.email = :email")})

NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 17/5/2011 09:54:10 PM

Davi, essa é minha classe fornecedorDao. E quanto as linhas não faço a minima ideia, tb estou aprendendo.


[CODE]

package treinamento.dao;
import java.util.logging.Level;
import java.util.logging.Logger;
import treinamento.entidade.Fornecedor;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.awt.List;


/**
 *
 * @author nsouza
 */
public class FornecedorDao extends GenericaDao{
    
 
    public FornecedorDao(){
        
    }
    
     public void addFornecedor(Fornecedor frn){
        try {
            String sql = "insert into fornecedor (nome,endereco,numero,complemento,bairro,cidade,"
                    + "insc_estadual,telefone,email) values(?,?,?,?,?,?,?,?,?)";
            
            executeCommand(sql, frn.getNome(),frn.getEndereco(),frn.getNumero(),frn.getComplemento(),frn.getBairro(),
                    frn.getCidade(),frn.getInscEstadual(),frn.getTelefone(),frn.getEmail());
       
        } catch (SQLException ex) {
            Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
     
     public Fornecedor getFornecedor(int idForn) throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM Fornecedor WHERE IDForn = ?", idForn);
        Fornecedor usr = null;
        if (rs.next()) {
            usr = populateFornecedorInfo(rs);
        }
        rs.close();
        return usr;
    }
     
     public void updateFornecedor(Fornecedor frn){
        try {
            String sql = "UPDATE Fornecedor SET nome=?, endereco=?, numero=?,complemento=?,bairro=?,cidade=?,"
                    + "insc_estadual=?,telefone=?,email=? WHERE IDForn = ?";
            executeCommand(sql, frn.getNome(),frn.getEndereco(),frn.getNumero(),frn.getComplemento(),frn.getBairro()
                   + frn.getCidade(),frn.getInscEstadual(),frn.getTelefone(),frn.getEmail(),frn.getIdforn());
        } catch (SQLException ex) {
            Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
     
      public void revomeFornecedor(int idForn) {
        try {
            executeCommand("DELETE FROM Fornecedor WHERE IDForn = ?", idForn);
        } catch (SQLException ex) {
            Logger.getLogger(FornecedorDao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
     
   
     
     public LinkedList<Fornecedor> getAllFornecedor() throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM Fornecedor");
        LinkedList<Fornecedor> toReturn = new LinkedList<Fornecedor>();
        while (rs.next()) {
            toReturn.add(populateFornecedorInfo(rs));
        }
        rs.close();
        return toReturn;
    }
     
     
     
     
     public static Fornecedor populateFornecedorInfo(ResultSet rs) throws SQLException {
        Fornecedor toReturn = new Fornecedor();
        toReturn.setIdforn(rs.getInt("IDFORN"));
        toReturn.setNome(rs.getString("NOME"));
        toReturn.setEndereco(rs.getString("ENDERECO"));
        toReturn.setNumero(rs.getInt("NUMERO"));
        toReturn.setComplemento(rs.getString("COMPLEMENTO"));
        toReturn.setBairro(rs.getString("BAIRRO"));
        toReturn.setCidade(rs.getString("CIDADE"));
        toReturn.setInscEstadual(rs.getInt("INSC_ESTADUAL"));
        toReturn.setTelefone(rs.getString("TELEFONE"));
        toReturn.setEmail(rs.getString("EMAIL"));
        return toReturn;
    }

    
}


[/CODE]
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 18/5/2011 07:01:30 AM

Pelo método:



Percebi que ele retorna o Fornecedor pelo id.

Para ver o número das linhas, se tiver usando eclipse, vai no canto esquerdo da classe (*.java) e clica com o botão direito e seleciona a opção show numbers. No netbenas tb é parecido, a opção para aparecer as linhas não é identico , mas é bem parecido.

Não se esqueça que o erro está acontecendo é um NullPointerException nas classes ProdutoDao e ProdutoDaoTest.
Em um post anterior citei até as linhas.


Att Davi
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 18/5/2011 06:53:42 PM

Caro Davi, corrigi o problema no nullpoint, agora deu o seguinte erro:

[CODE]
Testsuite: treinamento.dao.ProdutoDaoTest
addProduto
Error to try 0 with value treinamento.entidade.Fornecedor[ idforn=2 ]
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 7,985 sec

------------- Standard Output ---------------
addProduto
Error to try 0 with value treinamento.entidade.Fornecedor[ idforn=2 ]
------------- ---------------- ---------------
Testcase: testAddProduto(treinamento.dao.ProdutoDaoTest): Caused an ERROR
Parâmetro IN ou OUT ausente do índice:: 1
java.sql.SQLException: Parâmetro IN ou OUT ausente do índice:: 1
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1821)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3571)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at treinamento.dao.GenericaDao.executeCommand(GenericaDao.java:63)
at treinamento.dao.ProdutoDao.addProduto(ProdutoDao.java:31)
at treinamento.dao.ProdutoDaoTest.testAddProduto(ProdutoDaoTest.java:72)


Test treinamento.dao.ProdutoDaoTest FAILED
test:
Deleting: /tmp/TEST-treinamento.dao.ProdutoDaoTest.xml
BUILD SUCCESSFUL (total time: 9 seconds)


[/CODE]
ROBSON PASSARELLA TEIXEIRA
 

 


País: Brasil
Estado: DF
Cidade: taguatinga
Mensagens: 518
 Postado em: 18/5/2011 07:09:36 PM

Favor poste tb a sua classe ProdutoDAO e conforme a mesagem do stackTrace verifique o indice revise o
Parâmetro IN ou OUT ausente do índice
metodo addProduto em ProdutoDAO para ver o erro se naum post ele aqui tb para analisarmos melhor.

att
 robson Passarella

NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 18/5/2011 10:15:28 PM

Abaixo o que vc pediu, sobre revisar os parametos IN e OUT não sei como fazer.
Obrigado desde já!!!

Classe produtoDao
[CODE]

package treinamento.dao;


import treinamento.entidade.Produto;
import treinamento.dao.FornecedorDao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
/**
 *
 * @author Nilo
 */
public class ProdutoDao extends GenericaDao{

      private static final long serialVersionUID = 1L;

      public ProdutoDao(){

      }

      
    public void addProduto(Produto prd) throws SQLException {
        //usr.setId(getNextId("ProdutoS"));
        String sql = "INSERT INTO PRODUTO (IDFORN,NOME,VLR_UNITARIO,QTDE_ESTOQUE) values (?,?,?,?)";
        executeCommand(sql, prd.getIdforn(), prd.getNome(),prd.getVlrUnitario(),prd.getQtdeEstoque());

    }

    public void removeProduto(int idProduto) throws SQLException {
        executeCommand("DELETE FROM Produto WHERE IDProduto = ?", idProduto);
    }

    public void updateProduto(Produto prd) throws SQLException {
        String sql = "UPDATE Produto SET IDFOR=?,NOME=?,VLR_UNITARIO=?,QTDE_ESTOQUE=? where ID_PRODUTO=?";
        executeCommand(sql, prd.getIdforn(),prd.getNome(),prd.getVlrUnitario(),prd.getQtdeEstoque(),prd.getIdProduto());
    }

    public Produto getProduto(int idProduto) throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM Produto WHERE ID_Produto = ?", idProduto);
        Produto usr = null;
        if (rs.next()) {
            usr = populateProdutoInfo(rs);
        }
        rs.close();
        return usr;
    }

    public List<Produto> getAllProdutos() throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM Produto");
        List<Produto> toReturn = new LinkedList<Produto>();
        while (rs.next()) {
            toReturn.add(populateProdutoInfo(rs));
        }
        rs.close();
        return toReturn;
    }

    public static Produto populateProdutoInfo(ResultSet rs) throws SQLException {
        Produto toReturn = new Produto();
        FornecedorDao FornDao = new FornecedorDao();
        toReturn.setIdProduto(rs.getInt("ID_PRODUTO"));
        toReturn.setIdforn(FornDao.getFornecedor(rs.getInt("IDFORN")));
        toReturn.setNome(rs.getString("NOME"));
        toReturn.setVlrUnitario(rs.getFloat("VLR_UNITARIO"));
        toReturn.setQtdeEstoque(rs.getInt("QTDE_ESTOQUE"));
        return toReturn;
    }


[/CODE]


METODO addProduto


[CODE]

@Test
    public void testAddProduto() throws Exception {
        System.out.println("addProduto");
       
        
        Fornecedor forn = new Fornecedor();
        forn.setNome("Andorra");
        forn.setEndereco("Californai");
        forn.setNumero(201);
        forn.setComplemento("apt 21");
        forn.setBairro("caburiu");
        forn.setCidade("lavras");
        forn.setInscEstadual(97143000);
        forn.setTelefone("3258156");
        forn.setEmail("nicolas@gmail.com");
        FornecedorDao instanceFornecedor = new FornecedorDao();
        instanceFornecedor.addFornecedor(forn);

         
        Produto prd = new Produto();
        prd.setIdforn(instanceFornecedor.getFornecedor(2));
        prd.setNome("camisa");
        prd.setVlrUnitario(10f);
        prd.setQtdeEstoque(50);        
        ProdutoDao instance = new ProdutoDao();
        instance.addProduto(prd);
        
       
    }

[/CODE]



Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 19/5/2011 07:23:56 AM

Seguinte, desconfio um pouco desse sql:

INSERT INTO PRODUTO (IDFORN,NOME,VLR_UNITARIO,QTDE_ESTOQUE

Como está usando JPA, ao invés de VLR_UNITARIO, vc deve passar o atributo que vc mapeou que é vlrUnitario.
Confere isso para todos os sql.
Além disso, pode ser que vc ao corrigir isso ainda dê o erro,
então confere se :

prd.getIdforn()


Retorna algum valor, pq se ele estiver vindo nulo, não deveria estar nesse sql.


Espero ter ajudado


Att Davi

NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 19/5/2011 10:44:51 PM

Não entendi bem sua explicação. Não entendi o que tem haver o VLR_Unitario e o prd.getIdforn() passa o valor 2.
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 20/5/2011 07:33:29 AM

Seguinte vc está usando JPA, como ele é framework ORM, ele facilita muito a nossa vida.
Mas na hora de montar suas consultas ele não usa sql nativão, ele usa JPQL que é bem parecido.

Ao invez de utilizar esse String

String sql = "INSERT INTO PRODUTO (IDFORN,NOME,VLR_UNITARIO,QTDE_ESTOQUE) values (?,?,?,?)"

Vc deve substituir por:


String sql = "INSERT INTO PRODUTO (idforn,NOME,vlrUnitario,qtdeEstoque) values (?,?,?,?)"

É assim que o JPQL funciona ou se tiver usando Hibernate HQl e por aí vai....
ele já inteligente o bastante para saber que esses atributos são relativos as colunas que vc mapeou nas suas entidades.

Vamos ver se com essa correção o erro ainda vai continuar.

Agora vendo seu código com mais calma percebi que vc está usando jdbc em uma consulta e não JPA.
Esse método :
executeCommand(sql, prd.getIdforn(), prd.getNome(),prd.getVlrUnitario(),prd.getQtdeEstoque());

Usa jdbc pq se for, esquece o que falei de JPQL.
Se ele realmente usar jdbc seria interessante vc copiar toda a query gerada pelo sua String sql e tentgarrodar no seu próprio banco para ver que erro acontece lá.

Outra coisa se estiver usando jdbc puro esse prd.getIdForn() retorna um objeto e não o id do fornecedor, vc deveria fazer o seguinte:

prd.getIdforn().getIdforn()

Aí sim tem o id do fornecedor para vc usar no seu insert.

Att Davi
Anthony Accioly
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 157
 Postado em: 20/5/2011 10:30:08 AM



Citação:
Uma pergunta em cima de seu post. Eu estou aprendendo java pra valer e gostaria de saber o que significa isso:
#Código
@XmlRootElement --> Essa linha e as de baixo
 

PJava,

Em geral eu não recomendo sub-perguntas nos chamados de outras pessoas (é melhor que você abra uma nova pergunta para que outras pessoas possam fazer buscas no fórum e se se beneficiar das respostas mais facilmente).

Porém, abrindo um exceção, aqui vai uma explicação rápida:

@XmlRootElement : Tem haver com binding de XML na especificação JAXB, quando você quer transformar uma classe em XML e vice-versa. De uma olhada no Javadoc dela aqui: http://download.oracle.com/javase/6/docs/api/javax/xml/bind/annotation/XmlRootElement.html

Quanto as named queries, elas são anotações que permitem definir queries "reaproveitáveis". Você dá um nome para a query e pode recuperá-la através desse nome ao invés de ter que forçar a barra repetindo o JPQL várias vezes. Algumas implementações aproveitam para para fazer algumas otimizações (por exemplo, deixar a query preparada de antemão) que também podem trazer melhorias de performance. 
Eis um pequeno artigo em português sobre elas: http://javasemcafe.blogspot.com/2011/04/jpa-20-utilizando-os-namedquery.html 
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 20/5/2011 11:59:45 AM

Boa a dica do nosso colega acima, mas ainda estou encucado se vc está usando jdbc.
Posta para gente a classe: GenericaDao

Att Davi
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 20/5/2011 12:30:09 PM

Com certeza estou usando o jdbc. Minha conexao é com o Oracle 10g, quando chegar em casa a noite, postarei a minha classe GenericaDao.
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 20/5/2011 12:38:28 PM


Citação:
Seguinte, desconfio um pouco desse sql:

INSERT INTO PRODUTO (IDFORN,NOME,VLR_UNITARIO,QTDE_ESTOQUE

Como está usando JPA, ao invés de VLR_UNITARIO, vc deve passar o atributo que vc mapeou que é vlrUnitario.
Confere isso para todos os sql.
Além disso, pode ser que vc ao corrigir isso ainda dê o erro,
então confere se :

prd.getIdforn()


Retorna algum valor, pq se ele estiver vindo nulo, não deveria estar nesse sql.


Espero ter ajudado


Att Davi

O prd.getIdforn().getIdForn() eu coloco dentro da comand certo? E só substituir né?
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 20/5/2011 12:41:19 PM

Exato.


Att Davi
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 20/5/2011 10:08:02 PM


  Caro Davi e demais colegas, 
essa etapa funcionou. Agora testarei os outro métodos.
Um abraço a todos.
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03