Como foram de feriado? Pra começar o dia estou com uma dúvida aqui. Estou trabalhando com um banco de dados nada normalizado. Não estou usando nenhum framework para buscar os dados, estou usando apenas uma classe DAO. O problema é tenho informações no meu banco que podem ter valores NULOS e estão vindo “0”. Coloquei um comentário na minha DAO:
[code]public List recuperaChuvaOrdenadaData() throws SQLException {
PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM Chuvas ORDER BY Data");
ResultSet rs = stmt.executeQuery();
List<Chuva> list = new ArrayList<Chuva>();
while (rs.next()){
Chuva chuva = new Chuva();
chuva.setDataChuva(rs.getDate("Data"));
chuva.setChuva01(rs.getDouble("Chuva01")); // é nessa linha que acontece a problema. Os valores que precisava que viesse NULL está vindo "0"
list.add(chuva);
}
rs.close();
stmt.close();
return list;
}
[/code]
E a minha entidade:
[code]public class Chuva {
private Date dataChuva;
private Double chuva01;
public Date getDataChuva() {
return dataChuva;
}
public void setDataChuva(Date dataChuva) {
this.dataChuva = dataChuva;
}
public Double getChuva01() {
return chuva01;
}
public void setChuva01(Double chuva01) {
this.chuva01 = chuva01;
}[/code]
Esse método é implementado pelo driver do SQL, não pela própria Oracle, e não é muito bem especificado.
O resultado líquido é que cada driver SQL implementa isso de um jeito diferente, e acabamos tendo resultados que dependem tanto do banco usado quanto do driver usado, o que dá uma dor de cabeça dos infernos.
A idéia do usuário entanglement e bem interessante.
Talvez colocar com um método genérico ou uns overrides, pois esse mesmo comportamento ocorre com int, long, float. além de double.
Bom… estou com um problema meio inverso…
No meu caso me deparei com um getDouble que retorna null mesmo… não faz a conversão para ZERO conforme documentação.
Um dos motivos é que o driver não reconheceu o SQL NULL por algum motivo…
Estou vendo se há alguma configuração para isso ou se o driver usado é muito antigo… mas alguém, já se deparou com isso?