ManyToOne + JTable + consulta hsql utilizando o inner join

5 respostas
hvivox

quero pegar uma consulta que possui dados de duas entidades e passar para uma JTable como faço isso. Até então só estou conseguindo passar para JTable uma consulta simples tipo

5 Respostas

von.juliano

Se as suas entidades estão corretamente relacionadas, essa forma que você está fazendo já traz os valores.

Blz? Flw! :thumbup:

hvivox

Ok! mas a consulta que estou em é essa

consigo obter um resultado, além disso um List recebe o resultado,certo!
Minha dúvida é onde devo jogar o resultado para por na JTable?
Essa é minha grande dúvida :roll:

tonybignardi

Cara eu uso resultset para consultas no banco…
ai eu tenho um tablemodel ageitado pra colocar os resultados…
ai vc seta ele na table passando o resultset…
tipo
table.setmode(new tablemodel(nomedoresultset);
num esquece de colocar alias nos campos da tabela pra ficar melhor pra visualizar…
tipo
select codicli as codigo do cliente from cliente

/*
 * tableModel.java
 *
 * Created on 26 de Marco de 2007, 11:22
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package br.com.haar.objetos;
import javax.swing.table.AbstractTableModel;
import java.sql.*;

/**
 *
 * @author Hugo
 */
public class tableModel extends AbstractTableModel{
    private int colunas;
    private int linhas;
    private ResultSet ResultSets;
    private ResultSetMetaData metaData;
    /** Creates a new instance of tableModel */
    public tableModel(ResultSet rs) throws SQLException {
        ResultSets = rs;
        metaData = rs.getMetaData();
        
        //determina o n�mero de linhas em um ResultSet
        rs.last(); //move o cursor para o ultimo registro
        linhas = rs.getRow(); // pega o numero de linhas
        
        //notifica JTable das alterac�es
        fireTableStructureChanged();
    }

    public int getRowCount() {
        return linhas;
    }

    public int getColumnCount() {
        try {
            //determina o numero de colunas
            return metaData.getColumnCount();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        // se houver problema retorna 0
        return 0;
        
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        try {
            ResultSets.absolute(rowIndex + 1);
            return ResultSets.getObject(columnIndex + 1);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        // caso de algum problema retorna vazio
        return "";
                
    }
    
    public String getColumnName (int column){
        //determina o nome da coluna
        try{
            return metaData.getColumnName(column + 1);
        }catch(SQLException ex) {
            ex.printStackTrace();
            
        }
        // caso de algum problema retorna vazio
        return "";
    }
}

não esquece de tentar entender o tablemodle pra poder fazer alterações!!
Espero ter ajudado

hvivox

Obrigado pela ajuda colega! vou tentar solucionar este problema, assim que tiver um resultado dou uma resposta a todos que estão com essa dúvida

hvivox

Estou utilizando o hibernate, creio que ele não funciona com o resultset, ou estou enganado? Sei que o
resultSet é utilizado com o JDBC puro!

Criado 23 de junho de 2008
Ultima resposta 1 de jul. de 2008
Respostas 5
Participantes 3