Erro no código Java

13 respostas
D

[TopLink Warning]: 2011.12.03 10:16:27.401–UnitOfWork(16946633)–Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ‘NaN’ is not a valid numeric or approximate numeric value
Error Code: 0
Call: UPDATE produto SET TOTAL = ?, ESTOQUE = ?, CUSTOMEDIOPRODUTO = ? WHERE (CODIGOPRODUTO = ?)
bind => [NaN, 0, NaN, 1]
Query: UpdateObjectQuery(br.com.ControleDeEstoqueSicredi.View.Produto[codigoproduto=1])

Ola bom dia estou com o seguinte erro acima, será que alguém poderia me ajudar?

13 Respostas

E

vc recebe os dados a partir do Javascript? Você está enviando para a consulta, em Total e CustoMedio, “NaN” (Not a Number). Verifica os valores que você está passando como parâmetro.

D

Através deste código eu faço as entradas e as saídas do estoque, olha o código abaixo se está certo.

produtoQuery = entityManager.createNamedQuery("Produto.findByCodigoproduto");
    produtoQuery.setParameter("codigoproduto", detalhesaida.getDetalhesaidaPK().getCodigoproduto());
    List<Produto> data = produtoQuery.getResultList();
    
  

    data.get(0).setEstoque(data.get(0).getEstoque()-detalhesaida.getQuantidadedetalhesaida());
    data.get(0).setCustomedioproduto((data.get(0).getTotal()-detalhesaida.getTotaldetalhesaida())/data.get(0).getEstoque());
    data.get(0).setTotal(data.get(0).getCustomedioproduto()*data.get(0).getEstoque());
A

cara,

seu erro ta ai

'NaN' is not a valid numeric or approximate numeric value

vc ta atribuindo para uma coluna do tipo numero, ‘NaN’

t+

D

Como eu faço para sulucionar esse erro?

A

cara,

faz um debug no seu codigo e pq ta chegando esses valores,
posta ai seu entidade Produto.

t+

D
produtoQuery = entityManager.createNamedQuery("Produto.findByCodigoproduto");
    produtoQuery.setParameter("codigoproduto", detalhesaida.getDetalhesaidaPK().getCodigoproduto());
    List<Produto> data = produtoQuery.getResultList();
    
  

    data.get(0).setEstoque(data.get(0).getEstoque()-detalhesaida.getQuantidadedetalhesaida());
    data.get(0).setCustomedioproduto((data.get(0).getTotal()-detalhesaida.getTotaldetalhesaida())/data.get(0).getEstoque());
    data.get(0).setTotal(data.get(0).getCustomedioproduto()*data.get(0).getEstoque());
A

sua classe Produto

D

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.ControleDeEstoqueSicredi.bean;

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeSupport;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.NamedQueries;

import javax.persistence.NamedQuery;

import javax.persistence.Table;

import javax.persistence.Transient;

/**
*

  • @author Diego
    
    */
    
    @Entity
    
    @Table(name = produto,schema = “”)
    
    @NamedQueries({@NamedQuery(name = Produto.findByCodigoproduto, query = SELECT p FROM Produto p WHERE p.codigoproduto = :codigoproduto), @NamedQuery(name = Produto.findByCodigobarras, query = SELECT p FROM Produto p WHERE p.codigobarras = :codigobarras), @NamedQuery(name = Produto.findByNomeproduto, query = SELECT p FROM Produto p WHERE p.nomeproduto = :nomeproduto), @NamedQuery(name = Produto.findByValorentrada, query = SELECT p FROM Produto p WHERE p.valorentrada = :valorentrada), @NamedQuery(name = Produto.findByCustomedioproduto, query = SELECT p FROM Produto p WHERE p.customedioproduto = :customedioproduto), @NamedQuery(name = Produto.findByTotal, query = SELECT p FROM Produto p WHERE p.total = :total), @NamedQuery(name = Produto.findByEstoque, query = SELECT p FROM Produto p WHERE p.estoque = :estoque), @NamedQuery(name = Produto.findByCodigounidademedida, query = SELECT p FROM Produto p WHERE p.codigounidademedida = :codigounidademedida), @NamedQuery(name = Produto.findByDescricaounidademedida, query = SELECT p FROM Produto p WHERE p.descricaounidademedida = :descricaounidademedida), @NamedQuery(name = Produto.findByCodigogrupo, query = SELECT p FROM Produto p WHERE p.codigogrupo = :codigogrupo), @NamedQuery(name = Produto.findByDescricaogrupo, query = SELECT p FROM Produto p WHERE p.descricaogrupo = :descricaogrupo), @NamedQuery(name = Produto.findByEstoqueminimo, query = SELECT p FROM Produto p WHERE p.estoqueminimo = :estoqueminimo)})
    
    public class Produto implements Serializable {
    
    @Transient
    
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    
    private static final long serialVersionUID = 1L;
    
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    
    @Column(name = CODIGOPRODUTO, nullable = false)
    
    private Integer codigoproduto;
    
    @Column(name = CODIGOBARRAS)
    
    private String codigobarras;
    
    @Column(name = NOMEPRODUTO)
    
    private String nomeproduto;
    
    @Column(name = VALORENTRADA)
    
    private Double valorentrada;
    
    @Column(name = CUSTOMEDIOPRODUTO)
    
    private Double customedioproduto;
    
    @Column(name = TOTAL)
    
    private Double total;
    
    @Column(name = ESTOQUE)
    
    private Integer estoque;
    
    @Column(name = CODIGOUNIDADEMEDIDA)
    
    private Integer codigounidademedida;
    
    @Column(name = DESCRICAOUNIDADEMEDIDA)
    
    private String descricaounidademedida;
    
    @Column(name = CODIGOGRUPO)
    
    private Integer codigogrupo;
    
    @Column(name = DESCRICAOGRUPO)
    
    private String descricaogrupo;
    
    @Column(name = ESTOQUEMINIMO)
    
    private Integer estoqueminimo;
    

    public Produto() {
    }

    public Produto(Integer codigoproduto) {
    
    this.codigoproduto = codigoproduto;
    
    }
    
    public Integer getCodigoproduto() {
    
    return codigoproduto;
    
    }
    
    public void setCodigoproduto(Integer codigoproduto) {
    
    Integer oldCodigoproduto = this.codigoproduto;
    
    this.codigoproduto = codigoproduto;
    
    changeSupport.firePropertyChange(codigoproduto, oldCodigoproduto, codigoproduto);
    
    }
    
    public String getCodigobarras() {
    
    return codigobarras;
    
    }
    
    public void setCodigobarras(String codigobarras) {
    
    String oldCodigobarras = this.codigobarras;
    
    this.codigobarras = codigobarras;
    
    changeSupport.firePropertyChange(codigobarras, oldCodigobarras, codigobarras);
    
    }
    
    public String getNomeproduto() {
    
    return nomeproduto;
    
    }
    
    public void setNomeproduto(String nomeproduto) {
    
    String oldNomeproduto = this.nomeproduto;
    
    this.nomeproduto = nomeproduto;
    
    changeSupport.firePropertyChange(nomeproduto, oldNomeproduto, nomeproduto);
    
    }
    
    public Double getValorentrada() {
    
    return valorentrada;
    
    }
    
    public void setValorentrada(Double valorentrada) {
    
    Double oldValorentrada = this.valorentrada;
    
    this.valorentrada = valorentrada;
    
    changeSupport.firePropertyChange(valorentrada, oldValorentrada, valorentrada);
    
    }
    
    public Double getCustomedioproduto() {
    
    return customedioproduto;
    
    }
    
    public void setCustomedioproduto(Double customedioproduto) {
    
    Double oldCustomedioproduto = this.customedioproduto;
    
    this.customedioproduto = customedioproduto;
    
    changeSupport.firePropertyChange(customedioproduto, oldCustomedioproduto, customedioproduto);
    
    }
    
    public Double getTotal() {
    
    return total;
    
    }
    
    public void setTotal(Double total) {
    
    Double oldTotal = this.total;
    
    this.total = total;
    
    changeSupport.firePropertyChange(total, oldTotal, total);
    
    }
    
    public Integer getEstoque() {
    
    return estoque;
    
    }
    
    public void setEstoque(Integer estoque) {
    
    Integer oldEstoque = this.estoque;
    
    this.estoque = estoque;
    
    changeSupport.firePropertyChange(estoque, oldEstoque, estoque);
    
    }
    
    public Integer getCodigounidademedida() {
    
    return codigounidademedida;
    
    }
    
    public void setCodigounidademedida(Integer codigounidademedida) {
    
    Integer oldCodigounidademedida = this.codigounidademedida;
    
    this.codigounidademedida = codigounidademedida;
    
    changeSupport.firePropertyChange(codigounidademedida, oldCodigounidademedida, codigounidademedida);
    
    }
    
    public String getDescricaounidademedida() {
    
    return descricaounidademedida;
    
    }
    
    public void setDescricaounidademedida(String descricaounidademedida) {
    
    String oldDescricaounidademedida = this.descricaounidademedida;
    
    this.descricaounidademedida = descricaounidademedida;
    
    changeSupport.firePropertyChange(descricaounidademedida, oldDescricaounidademedida, descricaounidademedida);
    
    }
    
    public Integer getCodigogrupo() {
    
    return codigogrupo;
    
    }
    
    public void setCodigogrupo(Integer codigogrupo) {
    
    Integer oldCodigogrupo = this.codigogrupo;
    
    this.codigogrupo = codigogrupo;
    
    changeSupport.firePropertyChange(codigogrupo, oldCodigogrupo, codigogrupo);
    
    }
    
    public String getDescricaogrupo() {
    
    return descricaogrupo;
    
    }
    
    public void setDescricaogrupo(String descricaogrupo) {
    
    String oldDescricaogrupo = this.descricaogrupo;
    
    this.descricaogrupo = descricaogrupo;
    
    changeSupport.firePropertyChange(descricaogrupo, oldDescricaogrupo, descricaogrupo);
    
    }
    
    public Integer getEstoqueminimo() {
    
    return estoqueminimo;
    
    }
    
    public void setEstoqueminimo(Integer estoqueminimo) {
    
    Integer oldEstoqueminimo = this.estoqueminimo;
    
    this.estoqueminimo = estoqueminimo;
    
    changeSupport.firePropertyChange(estoqueminimo, oldEstoqueminimo, estoqueminimo);
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public int hashCode() {
    
    int hash = 0;
    
    hash += (codigoproduto != null ? codigoproduto.hashCode() : 0);
    
    return hash;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    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.codigoproduto == null && other.codigoproduto != null) || (this.codigoproduto != null && !this.codigoproduto.equals(other.codigoproduto))) {
    
    return false;
    
    }
    
    return true;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public String toString() {
    
    return “br.com.ControleDeEstoqueSicredi.View.Produto[codigoproduto=” + codigoproduto + “]”;
    
    }
    
    public void addPropertyChangeListener(PropertyChangeListener listener) {
    
    changeSupport.addPropertyChangeListener(listener);
    
    }
    
    public void removePropertyChangeListener(PropertyChangeListener listener) {
    
    changeSupport.removePropertyChangeListener(listener);
    
    }
    

}

A

cara,

qdo postar algum codigo, coloque dentro da tag code.
vc tem certeza que os atributos do seu objeto nao sao nulo, posta essa classe tbm.

t+

D

nao entendi o que voce quis dizer

A

qdo postar algum codigo, coloque dentro da tag code.

produtoQuery = entityManager.createNamedQuery("Produto.findByCodigoproduto");
produtoQuery.setParameter("codigoproduto", detalhesaida.getDetalhesaidaPK().getCodigoproduto());
List<Produto> data = produtoQuery.getResultList();

data.get(0).setEstoque(data.get(0).getEstoque()-detalhesaida.getQuantidadedetalhesaida());//verificar se esses atributos do objeto detalhesaida nao sao nulos
data.get(0).setCustomedioproduto((data.get(0).getTotal()-detalhesaida.getTotaldetalhesaida())/data.get(0).getEstoque());
data.get(0).setTotal(data.get(0).getCustomedioproduto()*data.get(0).getEstoque());

postar a classe DetalheSaida

D

[code]/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package br.com.ControleDeEstoqueSicredi.bean;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
*
* @author Diego
*/
@Entity
@Table(name = "produto",schema = "")
@NamedQueries({@NamedQuery(name = "Produto.findByCodigoproduto", query = "SELECT p FROM Produto p WHERE p.codigoproduto = :codigoproduto"), @NamedQuery(name = "Produto.findByCodigobarras", query = "SELECT p FROM Produto p WHERE p.codigobarras = :codigobarras"), @NamedQuery(name = "Produto.findByNomeproduto", query = "SELECT p FROM Produto p WHERE p.nomeproduto = :nomeproduto"), @NamedQuery(name = "Produto.findByValorentrada", query = "SELECT p FROM Produto p WHERE p.valorentrada = :valorentrada"), @NamedQuery(name = "Produto.findByCustomedioproduto", query = "SELECT p FROM Produto p WHERE p.customedioproduto = :customedioproduto"), @NamedQuery(name = "Produto.findByTotal", query = "SELECT p FROM Produto p WHERE p.total = :total"), @NamedQuery(name = "Produto.findByEstoque", query = "SELECT p FROM Produto p WHERE p.estoque = :estoque"), @NamedQuery(name = "Produto.findByCodigounidademedida", query = "SELECT p FROM Produto p WHERE p.codigounidademedida = :codigounidademedida"), @NamedQuery(name = "Produto.findByDescricaounidademedida", query = "SELECT p FROM Produto p WHERE p.descricaounidademedida = :descricaounidademedida"), @NamedQuery(name = "Produto.findByCodigogrupo", query = "SELECT p FROM Produto p WHERE p.codigogrupo = :codigogrupo"), @NamedQuery(name = "Produto.findByDescricaogrupo", query = "SELECT p FROM Produto p WHERE p.descricaogrupo = :descricaogrupo"), @NamedQuery(name = "Produto.findByEstoqueminimo", query = "SELECT p FROM Produto p WHERE p.estoqueminimo = :estoqueminimo")})
public class Produto implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "CODIGOPRODUTO", nullable = false)
private Integer codigoproduto;
@Column(name = "CODIGOBARRAS")
private String codigobarras;
@Column(name = "NOMEPRODUTO")
private String nomeproduto;
@Column(name = "VALORENTRADA")
private Double valorentrada;
@Column(name = "CUSTOMEDIOPRODUTO")
private Double customedioproduto;
@Column(name = "TOTAL")
private Double total;
@Column(name = "ESTOQUE")
private Integer estoque;
@Column(name = "CODIGOUNIDADEMEDIDA")
private Integer codigounidademedida;
@Column(name = "DESCRICAOUNIDADEMEDIDA")
private String descricaounidademedida;
@Column(name = "CODIGOGRUPO")
private Integer codigogrupo;
@Column(name = "DESCRICAOGRUPO")
private String descricaogrupo;
@Column(name = "ESTOQUEMINIMO")
private Integer estoqueminimo;

public Produto() {
}

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

public Integer getCodigoproduto() {
return codigoproduto;
}

public void setCodigoproduto(Integer codigoproduto) {
Integer oldCodigoproduto = this.codigoproduto;
this.codigoproduto = codigoproduto;
changeSupport.firePropertyChange("codigoproduto", oldCodigoproduto, codigoproduto);
}

public String getCodigobarras() {
return codigobarras;
}

public void setCodigobarras(String codigobarras) {
String oldCodigobarras = this.codigobarras;
this.codigobarras = codigobarras;
changeSupport.firePropertyChange("codigobarras", oldCodigobarras, codigobarras);
}

public String getNomeproduto() {
return nomeproduto;
}

public void setNomeproduto(String nomeproduto) {
String oldNomeproduto = this.nomeproduto;
this.nomeproduto = nomeproduto;
changeSupport.firePropertyChange("nomeproduto", oldNomeproduto, nomeproduto);
}

public Double getValorentrada() {
return valorentrada;
}

public void setValorentrada(Double valorentrada) {
Double oldValorentrada = this.valorentrada;
this.valorentrada = valorentrada;
changeSupport.firePropertyChange("valorentrada", oldValorentrada, valorentrada);
}

public Double getCustomedioproduto() {
return customedioproduto;
}

public void setCustomedioproduto(Double customedioproduto) {
Double oldCustomedioproduto = this.customedioproduto;
this.customedioproduto = customedioproduto;
changeSupport.firePropertyChange("customedioproduto", oldCustomedioproduto, customedioproduto);
}

public Double getTotal() {
return total;
}

public void setTotal(Double total) {
Double oldTotal = this.total;
this.total = total;
changeSupport.firePropertyChange("total", oldTotal, total);
}

public Integer getEstoque() {
return estoque;
}

public void setEstoque(Integer estoque) {
Integer oldEstoque = this.estoque;
this.estoque = estoque;
changeSupport.firePropertyChange("estoque", oldEstoque, estoque);
}

public Integer getCodigounidademedida() {
return codigounidademedida;
}

public void setCodigounidademedida(Integer codigounidademedida) {
Integer oldCodigounidademedida = this.codigounidademedida;
this.codigounidademedida = codigounidademedida;
changeSupport.firePropertyChange("codigounidademedida", oldCodigounidademedida, codigounidademedida);
}

public String getDescricaounidademedida() {
return descricaounidademedida;
}

public void setDescricaounidademedida(String descricaounidademedida) {
String oldDescricaounidademedida = this.descricaounidademedida;
this.descricaounidademedida = descricaounidademedida;
changeSupport.firePropertyChange("descricaounidademedida", oldDescricaounidademedida, descricaounidademedida);
}

public Integer getCodigogrupo() {
return codigogrupo;
}

public void setCodigogrupo(Integer codigogrupo) {
Integer oldCodigogrupo = this.codigogrupo;
this.codigogrupo = codigogrupo;
changeSupport.firePropertyChange("codigogrupo", oldCodigogrupo, codigogrupo);
}

public String getDescricaogrupo() {
return descricaogrupo;
}

public void setDescricaogrupo(String descricaogrupo) {
String oldDescricaogrupo = this.descricaogrupo;
this.descricaogrupo = descricaogrupo;
changeSupport.firePropertyChange("descricaogrupo", oldDescricaogrupo, descricaogrupo);
}

public Integer getEstoqueminimo() {
return estoqueminimo;
}

public void setEstoqueminimo(Integer estoqueminimo) {
Integer oldEstoqueminimo = this.estoqueminimo;
this.estoqueminimo = estoqueminimo;
changeSupport.firePropertyChange("estoqueminimo", oldEstoqueminimo, estoqueminimo);
}

@Override
public int hashCode() {
int hash = 0;
hash += (codigoproduto != null ? codigoproduto.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.codigoproduto == null && other.codigoproduto != null) || (this.codigoproduto != null && !this.codigoproduto.equals(other.codigoproduto))) {
return false;
}
return true;
}

@Override
public String toString() {
return "br.com.ControleDeEstoqueSicredi.View.Produto[codigoproduto=" + codigoproduto + "]";
}

public void addPropertyChangeListener(PropertyChangeListener listener) {
changeSupport.addPropertyChangeListener(listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
changeSupport.removePropertyChangeListener(listener);
}

}

D

os objtos selecionados estão todos na classe produto, e os mesmos nao estao selecionados no banco de dados como nulo nao, nao consegui colocar esses tag code, pois eu sou novo no forum.

Criado 3 de dezembro de 2011
Ultima resposta 3 de dez. de 2011
Respostas 13
Participantes 3