Opa…
Estou tentado popular uma JTable com os dados resultantes de uma pesquisa com o Hibernate, após algumas pesquisas no fórum JTable no NetBeans e Hibernate com JTable entre outros tópicos sobre o assunto, vi que para isso talvez seria conveniente dar uma olhada no Genesis, então fui atrás e procurei aprender/entender o mesmo. Após vários testes(quebrar a cabeça e cara) ainda não consegui fazer o que eu queria (popular uma JTable com dados do BD usando Hibernate + Genesis).
Minhas classes são:
[code]@Entity
@Table(name = “person”)
public class Person implements Serializable {
@Id @GeneratedValue
@Column(name = "person_id")
private Long id;
@Column(name = "age")
private int age;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
//Getters and Setters
}[/code]
[code]public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().buildSessionFactory();
} catch (Throwable ex) {
// Log exception!
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return sessionFactory.openSession();
}
}[/code]
[code]public class PersonDAO extends AbstractHibernateCommand{
private Session session;
...
@Remotable
public List consultar(){
session = ConnectDB.getInstance();
List pessoas = session.createQuery("from Person").list();
return pessoas;
}
}[/code]
[code]public class PersonAction {
…
private Person person;
@DataProvider(objectField="person")
public List consultar(){
PersonDAO personDAO = new PersonDAO();
return personDAO.consultar();
}
}[/code]
[code]public class ConsultaPerson extends javax.swing.JDialog {
private JPanel panelCentro;
private JTable personTable;
private SwingBinder binder;
public ConsultaPerson() {
super();
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setSize(800,600);
this.setLocationRelativeTo(null);
this.setTitle("Consulta de Pessoas");
setModal(true);
init();
}
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 517, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 381, Short.MAX_VALUE)
);
pack();
}
private void init(){ // definição dos componentes
this.getContentPane().setLayout(new BorderLayout());
PersonAction personAction = new PersonAction();
personAction.consultar();
TableColumnModel columnModel = new DefaultTableColumnModel();
TableModel model = new DefaultTableModel();
personTable = new JTable(new DefaultTableModel(new String[] {"Id", "Age", "First Name", "Last Name"}, 0));
personTable.setName("person");
personTable.putClientProperty(SwingBinder.COLUMN_NAMES, new String[] {"person_id", "age", "first_name", "last_name"});
panelCentro=new JPanel();
panelCentro.setVisible(true);
panelCentro.add(personTable);
this.getContentPane().add(panelCentro, BorderLayout.CENTER);
}
}[/code]
Sou iniciante em java e este é meu primeiro uso do JTable + Hibernate + Genesis :oops:
Onde estou errando? Na tela nem chega a mostrar a tabela, mesmo que vazia.
Desde já agradeço!!!