[RESOLVIDO] Dados repetindo em um JList

Seguinte Galera, estou fazendo uma interface do perfil do Aluno e estou querendo exibir em um jList as matérias escolhidas por ele. Consegui fazer exibir porém os dados estão se repetindo.
Segue a imagem abaixo:

bo

E a função que faz a busca:

 public List<DisciplinaEscolhida> exibeLista(String id){
        Connection cons = (Connection) ConnectionFactory.getConnection();
        PreparedStatement stmt = null;
        ResultSet rs = null;
        List<DisciplinaEscolhida> disci = new ArrayList<>();
        
        try {
            stmt = (PreparedStatement) cons.prepareStatement("SELECT * FROM disci_escolhida AS D INNER JOIN alunos AS A on D.id_alunoDE = ?");
            stmt.setString(1, id);
            rs = stmt.executeQuery();
            
            
            while(rs.next()){
                DisciplinaEscolhida d = new DisciplinaEscolhida();
                d.setNome_d_escolhida(rs.getString("nome_d_escolhida"));
                String nome_disci = rs.getString("nome_d_escolhida");
                System.out.println(nome_disci);

                modelo.addElement(nome_disci);
                
                
                disci.add(d);    
            }
            lista_de.setModel(modelo);
            
            
        } catch (SQLException ex) {
            Logger.getLogger(AlunoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            ConnectionFactory.closeConnection((com.mysql.jdbc.Connection) cons, stmt, rs);
        }
       
        return disci;
    }

Se vc conectar no banco, o que isso retorna?

se esta repetido, tem que entender o motivo. talvez tenha outros campos que precisam ser considerados e depende do seu modelo de dados

1 curtida

Você não está filtrando ou agrupando os dados, nesta Query que você está passando ele vai trazer todas as matérias referentes aos alunos que você passou o ID e vai repetir este resultado para todos os alunos. Eu faria um Join normal e utilizaria a cláusula where:
“SELECT * FROM disci_escolhida AS D INNER JOIN alunos AS A on D.id_alunoDE = A.id WHERE A.id = ?”

1 curtida

Limpa o JList antes de carregar os dados usando o método .clear() no seu JList. Se caso sua query estiver correta e o problemas continuar.

Daniel95 DEU CERTO MEU QUERIDO!
Se você fosse mulher eu ia te dar um beijo na testa <3
Muito obrigado