Return Generated Keys mysql java

Olá pessoal,
eu não estou conseguindo
retornar a chave primaria do meu endereço
será que alguém poderia me dar uma ajuda fazendo o favor?

public int salvarEndereco(Endereco endereco) throws LAFQADaoException {

        PreparedStatement ps = null;
        Connection conn = null;

        if (endereco == null)
            throw new LAFQADaoException("o valor passado não pode ser lido");

        try {

            String sql = "INSERT INTO endereco(rua, numero, bairro, " +
                    "cidade, estado, cep, uf)"
                    + "VALUES(?,?,?,?,?,?,?)";

            conn = this.conn;
            ps = conn.prepareStatement(sql);
            ps.setString(1, endereco.getRua());
            ps.setInt(2, endereco.getNumero());
            ps.setString(3, endereco.getBairro());
            ps.setString(4, endereco.getCidade());
            ps.setString(5, endereco.getEstado());
            ps.setString(6, endereco.getCep());
            ps.setString(7, endereco.getUf());
            ps.executeUpdate();
            //Retorna o id do endereco cadastrado
            //Não sei como retornar a chave primaria???
            //Não dá certo o que fiz???
            return Integer.parseInt(ps.getGeneratedKeys().getString(1);
        }
        catch (Exception sqle) {
            throw new LAFQADaoException("Erro ao inserir dados" + sqle);

        } finally {
            try {
                ConnectionFactory.closeconnection(conn, ps);
            }
            catch (SQLException ex) {
                Logger.getLogger(ProdutorDao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

[]'s.

o método getGeneratedKeys() retorna todas as chaves geradas e não apenas a última.

um exemplo:

[code]String sql = "INSERT INTO endereco(rua, numero, bairro, " +
“cidade, estado, cep, uf)”
+ “VALUES(?,?,?,?,?,?,?)”;
conn = this.conn;
ps = conn.prepareStatement(sql);
ps.setString(1, endereco.getRua());
ps.setInt(2, endereco.getNumero());
ps.setString(3, endereco.getBairro());
ps.setString(4, endereco.getCidade());
ps.setString(5, endereco.getEstado());
ps.setString(6, endereco.getCep());
ps.setString(7, endereco.getUf());
ps.executeUpdate();
ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); // é importante passar o parâmetro Statement.RETURN_GENERATED_KEYS
ResultSet rs = ps.getGeneratedKeys();

if (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount= rsmd.getColumnCount();

do {
    for (int i = 1; i <= columnCount; i++) {
        String key = rs.getString(i);
        System.out.println("key " + i + "is " + key);
    }
}
while (rs.next();)

} else {
System.out.println(“There are no generated keys.”);
}[/code]