Retorna hashCode em uma consulta de SQL

Estou com uma consulta em sql que está me retornando de uma forma errada.

Ele esta retornando assim?

[Cidade.Cidade@1d8b06a, Cidade.Cidade@251a5c, Cidade.Cidade@15ec3c1

e eu gostaria que retornasse assim

Acrelândia
Assis Brasil

Segue o código do metodo:

Classe Cidade

public class Cidade {

    private String nom_cidade;
    private String estado;

    public String getNom_cidade() {
        return nom_cidade;
    }
    public void setNom_cidade(String nom_cidade) {
        this.nom_cidade = nom_cidade;
    }
    public String toString(){
            return this.nom_cidade;
    }
}

Classe CidadeDao

public class CidEstDao extends GenericDao {

    public List<Cidade> getCidadeByEstado(String nom_cidade) throws Exception {
        String select = "SELECT nom_cidade FROM cidade WHERE estado = ?";
        Cidade cidade = null;
        PreparedStatement stmt = getConnection().prepareStatement(select);
        List<Cidade> cidades = new ArrayList<Cidade>(); 
        stmt.setString(1, nom_cidade);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            cidade = new Cidade();
            cidade.setNom_cidade(rs.getString("nom_cidade"));
            cidades.add(cidade);
        }
        rs.close();
        stmt.close();
        return cidades;
    }
}

Classe CidadeEstController

public class CidEstController {

    public List<Cidade> buscaCidadePorEstado (String nom_cidade) throws Exception{
        CidEstDao dao = new CidEstDao();
        return  dao.getCidadeByEstado(nom_cidade);
    }
}

Classe principal

private List<Cidade> cidadePorEstado() throws Exception {
        CidEstController cc = new CidEstController();
        try {
            //List<Cidade> c = cc.buscaCidadePorEstado(uf);
             //List<Cidade> listaCidades = new ArrayList<>();
             //listaCidades = cc.buscaCidadePorEstado (uf);
           return cc.buscaCidadePorEstado (uf);
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Ocorreu um erro, tente novamente!n" + e.getLocalizedMessage());
        } catch (NullPointerException e){
            JOptionPane.showMessageDialog(this, "Contato não localizdo ou não existe!n" + e.getLocalizedMessage());
        }
        return Collections.emptyList();
    }

Tem que sobrescrever o método toString() para que ele retorne do jeito que você quer, exemplo:

public String toString()
{
    return "nome: "  + nome + "idade: ";
}

no caso a sobrescrita seria na sua classe cidade.

1 curtida

mas eu fiz isso na classe cidade e continua dando a mesma mensagem, sera que eu escrevi errado???

Eu escrevi um código assim,

O Metodo da classe principal

  private List<Cidade> cidadePorEstado() throws Exception {
        CidEstController cc = new CidEstController();
        try {   return cc.buscaCidadePorEstado (uf);
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this,	"Ocorreu um erro, tente novamente!n" + e.getLocalizedMessage());
        } catch (NullPointerException e){
            JOptionPane.showMessageDialog(this, "Contato não localizdo ou não existe!n" + e.getLocalizedMessage());
        }
        return Collections.emptyList();
    }

Para retornar com um System.out.println()

try {
            for(Cidade cidade : cidadePorEstado()) System.out.println(cidade);
        } catch (Exception ex) {
            Logger.getLogger(CadCliente.class.getName()).log(Level.SEVERE, null, ex);
        }

Para imprimir ele funciona mas ao fazer praticamente o mesmo comando mas add um item na combo box, ele ta dando erro, falando que nao pode ser convertido em String, como faço para converter para string.