Erro semântico  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Diego Lino Albares
Thread.start()

Membro desde: 11/10/2011 22:11:53
Mensagens: 37
Offline

Será que alguém poderia me dar um aforça com esse erro aqui?

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])
abmpicoli
JavaTeenager

Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline

Carinha, aparentemente você está recebendo um "NaN" como parâmetro e repassando ele para o update, e isto está dando pau.

Com o que você está apresentando não dá pra resolver seu problema. Mas veja aí (isso é um PreparedStatement, né) como está a passagem dos parâmetros que estão dando NaN, e descubra porque os disgramado fidumaégua dos parâmetros estão virando NaN...

.x.
Diego Lino Albares
Thread.start()

Membro desde: 11/10/2011 22:11:53
Mensagens: 37
Offline

Ola boa tarde abmpicoli,

Eu utilizo uma query passando parametros para ela para poder dar saída nos produtos do estoque, só que quando eu vou dar saída em todos os produtos que consta em estoque ele dá esse erro, quando na realidade ele deveria ficar com a quantidade zero, não sei o que está acontecendo, porque este infeliz está recebendo NaN, segue abaixo o código utilizado:

Double total = 0.0;
Integer estoque;


int index = masterTable.getSelectedRow();
br.com.ControleDeEstoqueSicredi.bean.Saidaproduto s = list.get(masterTable.convertRowIndexToModel(index));
Collection<br.com.ControleDeEstoqueSicredi.bean.Detalhesaida> ds = s.getDetalhesaidaCollection();

for (Detalhesaida detalhesaida : ds) {

if (detalhesaida.getQuantidadedetalhesaida() == null) {

detalhesaida.setQuantidadedetalhesaida(1);
}

detalhesaida.setTotaldetalhesaida(detalhesaida.getValorunitariodetalhesaida() * detalhesaida.getQuantidadedetalhesaida());
total = total + detalhesaida.getTotaldetalhesaida();

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



if(detalhesaida.getQuantidadedetalhesaida()>data.get(0).getEstoque()){

JOptionPane.showMessageDialog(null, "A Quantidade Solicitada Não Existe Em Estoque");
detalhesaida.setQuantidadedetalhesaida(null);

}

else{
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());


}



}


jTextField10.setText(String.valueOf(total));

De uma olhada se dá para clarear alguma coisa? E se pode me ajudar, valeu obrigado.
abmpicoli
JavaTeenager

Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline

Carinha, pra mim tá cheirando muito forte que o problema está nestas 3 linhas:

Então recomendo que você coloque todas essas chamadas pinheirinho de forma indireta, que assim você consegue inspecionar a variável.
Aliás, recomendo a todos esta prática.

Isto tem algumas vantagens: 1) você não fica chamando o getter todo o tempo e ganha uns pontinhos de performance
2) Você consegue colocar um breakpoint no meio da sentença e validar o conteúdo da variável durante a depuração.
3) Seu código fica mais limpo e legível.



.x.
jaboot
Virtual Machine Man

Membro desde: 01/07/2005 14:25:37
Mensagens: 749
Localização: São Paulo
Offline

Diego Lino Albares,

Você está recebendo um NaN que vem de algum lugar, e está tentando colocar ele no SQL.
NaN = Not a Number. Dá uma debugada no seu código pra ver onde acontece isso.
[MSN] [ICQ]
Diego Lino Albares
Thread.start()

Membro desde: 11/10/2011 22:11:53
Mensagens: 37
Offline

abmpicoli valeu cara deu certo do código ai, muito obrigado, valeu a todos pela ateção, sem vocês eu tava no sal valeuuuuuuuuuuuuuuuuuuuuu......................
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team