Carregar Dados em uma JTable personalizada, Duvidas

4 respostas
G

Pessoal estou precisando de ajuda para carregar dados em um JTable. estou utilizando JPA+Hibernate+postgres
estava seguindo o exemplo do tutorial do paulo canedo…para carregar dados atraves de uma classe AbstractTableModel , no exemplo que estava seguindo ele ia na prorpiedade do JTable :model e mudava pra conexao com o form mais isso no NetBeans 5.5 eu estou utilizando o netbeans 6.5 e não tem essa opção para alterar, e acabei fazendo assim:

public class TabelaFuncionario extends AbstractTableModel {

private List listaIds;
 private ArrayList<Funcionario> Lista=new ArrayList();


  public TabelaFuncionario()
  {EntityManagerFactory emf = Persistence.createEntityManagerFactory("LASVEGASPU");
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();

    listaIds= em.createQuery("SELECT f.funId FROM funcionario f").getResultList();

    for(Iterator<String> it=listaIds.iterator(); it.hasNext();)
    { String elem=it.next();
      Lista.add((Funcionario)em.createNamedQuery("Funcionario.findByFunId").setParameter("id",elem).getSingleResult());
    }
    em.close();

  }

public int getRowCount() {
    return Lista.size();
}

public int getColumnCount() {
    return 7;
}

public Object getValueAt(int rowIndex, int columnIndex) {
    if(columnIndex==0)
    { return Lista.get(rowIndex).getFunId();
    }else if(columnIndex==1){
      return Lista.get(rowIndex).getFunNome();
    } else if(columnIndex==2){
      return Lista.get(rowIndex).getFunCargo();
    }else if(columnIndex==3){
      return Lista.get(rowIndex).getFunTelefone();
    } else if(columnIndex==4){
      return Lista.get(rowIndex).getFunEndereco();
    }else if(columnIndex==5){
      return Lista.get(rowIndex).getFunCpf();
    }else if(columnIndex==6){
      return Lista.get(rowIndex).getFunSalario();  }

      return null;
}

}

na hora que eu cliko no botao para atualizar o Table eu fasso assim

private void BPesquisaActionPerformed(java.awt.event.ActionEvent evt) {

jTable1.setModel(new TabelaFuncionario());

}

mais esta dando erro!!!

INFO: Not binding factory to JNDI, no JNDI name configured

Exception occurred during event dispatching:

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: funcionario is not mapped [SELECT f.funId FROM funcionario f]

at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)

at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)

quando eu cliko no primeiro link que o netbeans exibe na saida do erro ele direciona pra a l classe "public class TabelaFuncionario extends AbstractTableModel "
na linha “listaIds= em.createQuery(“SELECT f.funId FROM funcionario f”).getResultList();”

Por Favor se alguem poder me ajudar ficarei grato…
[]

4 Respostas

R

Repare na linha em que ocorreu o erro:

listaIds= em.createQuery(“SELECT f.funId FROM funcionario f”).getResultList();

O nome da classe mapeada é “Funcionario” e não “funcionario”, correto?

G

Valu roger_rf !!! realmente era isso…
mais agora esta ocorrendo outro erro, não e bem um erro!
tipo agora esta exibindo meus dados no Table mais na hora que ele exibe ele tambem muda os nomes das minhas colunas
Nome, Endereco, CPF para A,B,C

eu gostaria de saber como que faço para não mudar os nomes da coluna!
se alguem poder me ajudar…
[]

R

Verificando seu código de busca de dados:

Suponho que seja um número inteiro Integer ou Long. Quando você for percorrer a lista, terá de fazer a conversão de cada elemento para o tipo adequado:

for (Iterator<Integer> it=listaIds.iterator(); it.hasNext() {
  Integer elem= it.next();
  Lista.add((Funcionario)em.createNamedQuery("Funcionario.findByFunId").setParameter("id",elem).getSingleResult());
}
71C4700

Veja se lhe ajuda…

http://grupodax.wordpress.com/

Criado 3 de maio de 2009
Ultima resposta 4 de mai. de 2009
Respostas 4
Participantes 3