[RESOLVIDO] ResultSet Usando 3 tabelas e 3 classes

Tenho o código abaixo onde eu preciso fazer a busca no meu banco de dados usando o join e voltar os resultados para outro método que irá jogar esta pesquisa na minha tabela, porém eu não sei cmo pegar os dados e passar eles para os seus respectivas classes para eles poderem ser jogados na tabela!(btw não sei se me expliquei bem mas eu não encontrei material na internet)

    public List<Relatorios> findALL() {
    Connection con = null;
    ArrayList listRelatorios = new ArrayList<>();
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try {
        con = ConnectionFacotory.getConnection();

        stmt = con.prepareStatement("SELECT c.nomecontato, c.cpfcontato, e.cnpj, e.nomeempresas, a.descricaoarea, c.telresidencial, c.celular FROM  contatos as c\n"
                + "INNER JOIN empresas as e ON e.idempresas = c.fk_idempresas\n"
                + "INNER JOIN areas as a ON  a.idarea = c.fk_areacontato\n"
                + "where c.cpfcontato = ? and  c.data between ? and ?;");
        
        stmt.setString(1, txtCPF.getText());
        stmt.setString(2, txtDataIncial.getText());
        stmt.setString(3, txtDataFinal.getText());
        
        rs = stmt.executeQuery();
        while (rs.next()) {
            Areas a = new Areas();
            Contatos c = new Contatos();
            Empresas e = new Empresas();
            Relatorios r = new Relatorios();
            
            
            
            
            
            
            r.getContatos().setCpfcontato(rs.getString("cpfcontatao"));
            
            r.getEmpresas().setCnpj(rs.getString("cnpj"));
            r.getEmpresas().setNomeempresas(rs.getString("nomeempresas"));
            
            r.getAreas().setDescricaoarea(rs.getString("descricaoarea"));
            
            r.getContatos().setTelresidencial(rs.getString("telresidencial"));
            r.getContatos().setCelular(rs.getString("celular"));
            r.getContatos().setEmail(rs.getString("email"));
            

            listRelatorios.add(r);
        }

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro ao ler valores!"+ex);
    } finally {
        ConnectionFacotory.closeConnection(con, stmt, rs);
    }
    return listRelatorios;
}

Edita seu post tirando o código de comentário.
Usa o botão de texto pré formatado </> do fórum

feito ^^

eu tenho um método de consulta aqui que fiz para um trabalho para a faculdade, creio que você possa adaptá-lo para o seu código. Você precisa ter uma classe .bean com todos os campos do seu bd, e, mesmo que você tenha uma tabela pai com um id e suas respetciva tabelas filhas usando esse mesmo id (chave estrangeira) eu recomendo que você faça vários selects como eu fiz, para cada tabela, passando a mesma chave que a da tabela pai, pois quando eu fui fazer o inner join, não funcionou de jeito nehum, então decidi fazer dessa forma.

O código:
obs: a variável “dados” é o objeto da minha classe .bean que se chama ConexaoBEAN

public boolean consultar(ConexaoBEAN dados) {

 		
String sql=("SELECT nome FROM usuario WHERE senha=?");

 		try {

			stmt=con.prepareStatement(sql);
			
			
			stmt.setString(1,dados.getSenha().trim());
						
			ResultSet res=stmt.executeQuery();		
						
			while(res.next()) {
				
				dados.setNome(res.getString("nome"));		
				//return true;
			}

			
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
 		
String sql2=("SELECT imagens FROM digitais WHERE senha_fk=?");
 		
 		try {

			stmt=con.prepareStatement(sql2);
			
			
			stmt.setString(1,dados.getSenha().trim());
						
			ResultSet res2=stmt.executeQuery();		
						
			while(res2.next()) {
				
				dados.setImagens(res2.getBytes("imagens"));		
				return true;
			}
			
			stmt.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
			
		}
		return false;
 		
 		}

Você já tem um modelo da tabela? e já tem um método de inserção de dados nela?

Não entendi bem, mas vamos lá, primeiro, como é sua tela ? (web (jsf, JSP), swing…)
Se estiver dando erro, qual é ?

Olhando seu código, aparentemente pode estar ocorrendo NullPointerException, porque está acessando métodos dos atributos da classe Relatorios (remova o plural para ficar mais padronizado) que aparentemente não foram instanciados.
Acho que é apenas o NullPointerException, porque você está setando os valores corretamente.

Depois você exibe na sua página, caso seja JSP, você deve usar um loop, seja abrindo tag java ou usando JSTL. Caso seja JSF, você exibe setando o value de algum datatable.

Se não estiver trazendo resultado do banco, verifique o tipo data que está passando para o PreparedStatement.

Galera agradeço a todos, consegui resolver! Segue o código funcional, agora so vou passar ele para o meu pacote dao e ver se consigo receber os dados do textFields .

public List findALL() {
Connection con = null;
ArrayList listRelatorios = new ArrayList<>();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
con = ConnectionFacotory.getConnection();

    stmt = con.prepareStatement("SELECT c.nomecontato, c.cpfcontato, e.cnpj, e.nomeempresas, a.descricaoarea, c.telresidencial, c.celular, c.email FROM  contatos as c\n"
            + "INNER JOIN empresas as e ON e.idempresas = c.fk_idempresas\n"
            + "INNER JOIN areas as a ON  a.idarea = c.fk_areacontato\n"
            + "where c.cpfcontato = ? and  c.data between ? and ?;");
    
    stmt.setString(1, txtCPF.getText());
    stmt.setString(2, txtDataIncial.getText());
    stmt.setString(3, txtDataFinal.getText());

    rs = stmt.executeQuery(); // Aqui que a magica acontece!!!
    while (rs.next()) {
        Areas a = new Areas();
        Contatos c = new Contatos();
        Empresas e = new Empresas();
        Relatorios r = new Relatorios();
        
        c.setNomecontato(rs.getString("nomecontato"));
        c.setCpfcontato(rs.getString("cpfcontato"));
        c.setTelresidencial(rs.getString("telresidencial"));
        c.setCelular(rs.getString("celular"));
        c.setEmail(rs.getString("email"));
        
        r.setContatos(c);
        
        e.setCnpj(rs.getString("cnpj"));
        e.setNomeempresas(rs.getString("nomeempresas"));
        r.setEmpresas(e);
        
        a.setDescricaoarea(rs.getString("descricaoarea"));
        r.setAreas(a);
        

        listRelatorios.add(r);
    }

} catch (SQLException ex) {
    JOptionPane.showMessageDialog(null, "Erro ao ler valores!"+ex);
} finally {
    ConnectionFacotory.closeConnection(con, stmt, rs);
}
return listRelatorios;

}