1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Duvida como fazer inner join com mais de uma classes modelo

Estou com uma dúvida que não consegui encontrar solução no google, eu utilizo o padrão MVC no java, o problema é quando eu vou fazer um select utilizando inner join, eu tenho as classes modelo com getters e setters, como crio um List das duas classes, eu utilizo assim, eu vou usando extends nas classes modelos que quero criar a List, como faço para criar uma List com inner join sem ter que extender as classes.

Meu código é assim:

Model entrada

public class entrada extends tipo_entrada{

    private int id_entrada;
    private int id_tipo;
    private int id_forma;
    private double valor;
    private String obs;
    private Date data;

    /**
     * Construtos sem param
     */
    public entrada() {

    }

    /**
     * Construtor com param
     *
     * @param id_tipo
     * @param id_forma
     * @param valor
     * @param obs
     * @param data
     */
    public entrada(int id_tipo, int id_forma, double valor, String obs, Date data) {
        this.id_tipo = id_tipo;
        this.id_forma = id_forma;
        this.valor = valor;
        this.obs = obs;
        this.data = data;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public int getId_entrada() {
        return id_entrada;
    }

    public void setId_entrada(int id_entrada) {
        this.id_entrada = id_entrada;
    }

    public int getId_tipo() {
        return id_tipo;
    }

    public void setId_tipo(int id_tipo) {
        this.id_tipo = id_tipo;
    }

    public int getId_forma() {
        return id_forma;
    }

    public void setId_forma(int id_forma) {
        this.id_forma = id_forma;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

}

Model forma_receb
public class forma_receb {

    private int id_forma;
    private String forma;

    /**
     * Construtor sem param
     */
    public forma_receb() {

    }

    /**
     * Construtor com param
     * @param forma 
     */
    public forma_receb(String forma) {
        this.forma = forma;
    }

    public int getId_forma() {
        return id_forma;
    }

    public void setId_forma(int id_forma) {
        this.id_forma = id_forma;
    }

    public String getForma() {
        return forma;
    }

    public void setForma(String forma) {
        this.forma = forma;
    }


}

Model tipo_entrada
public class tipo_entrada extends forma_receb {

    private int id_tipo;
    private String tipo;


    public tipo_entrada() {

    }

    /**
     * Construtor com param
     * @param tipo 
     */
    public tipo_entrada(String tipo) {
        this.tipo = tipo;
    }

    public int getId_tipo() {
        return id_tipo;
    }

    public void setId_tipo(int id_tipo) {
        this.id_tipo = id_tipo;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }


}

EntradaDAO
public List getLista() throws SQLException {
        String sql = "SELECT entrada.id_entrada,tipo_entrada.tipo,forma_receb.forma,entrada.obs,entrada.data,entrada.valor \n"
                + "FROM entrada\n"
                + "INNER JOIN tipo_entrada \n"
                + "ON entrada.id_tipo = tipo_entrada.id_tipo\n"
                + "INNER JOIN forma_receb\n"
                + "ON entrada.id_forma = forma_receb.id_forma\n"
                + "ORDER BY entrada.id_entrada;";
        List lista = new ArrayList();
        PreparedStatement pst = conn.prepareStatement(sql);
        ResultSet rs = pst.executeQuery();
        while(rs.next()){
            entrada e = new entrada();
            e.setId_entrada(rs.getInt("id_entrada"));
            e.setTipo(rs.getString("tipo"));
            e.setForma(rs.getString("forma"));
            e.setObs(rs.getString("obs"));
            e.setData(rs.getDate("data"));
            e.setValor(rs.getDouble("valor"));
            lista.add(e);
        }
        rs.close();
        pst.close();
        return lista;
    }

Utilizo esse método no JFrame pra preencher a tabela
public void preencher_tabela() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        entrada_controller ec = new entrada_controller();
        try {
            List lista = ec.getLista_entrada();
            DefaultTableModel modelo = (DefaultTableModel) jTableEntrada.getModel();
            for (int i = modelo.getRowCount() - 1; i >= 0; i--) {
                modelo.removeRow(i);
            }
            if (lista != null) {
                for (int i = 0; i < lista.size(); i++) {
                    entrada entrada = (entrada) lista.get(i);
                    Object[] dados = new Object[]{
                        false,
                        entrada.getId_entrada(),
                        entrada.getTipo(),
                        entrada.getValor(),
                        entrada.getForma(),
                        dateFormat.format(entrada.getData())
                    };
                    modelo.insertRow(i, dados);
                }
                jTableEntrada.setModel(modelo);
            } else {
                JOptionPane.showMessageDialog(this, "Nenhum resultado encontrado");
            }
        } catch (SQLException ex) {
            Logger.getLogger(consulta_entrada.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java sql ou faça a sua própria pergunta.