Olá pessoal,
Desenvolvir essas classes:
package hibern.tables;
import hibern.model.Contato;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ContatoTableModel extends AbstractTableModel {
private static final int COL_ID = 0;
private static final int COL_NOME = 1;
private static final int COL_FONE = 2;
private static final int COL_EMAIL = 3;
private List<Contato> listaContatos;
public ContatoTableModel(List<Contato> lista) {
this.listaContatos.addAll(lista);
}
@Override
public int getRowCount() {
return listaContatos.size();
}
@Override
public int getColumnCount() {
return listaContatos.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Contato contato = listaContatos.get(rowIndex);
switch (columnIndex) {
case COL_ID:
return contato.getId();
case COL_NOME:
return contato.getNome();
case COL_FONE:
return contato.getFone();
case COL_EMAIL:
return contato.getEmail();
default:
return null;
}
}
}
package hibern.control;
import hibern.model.Contato;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
public class ContatoControl {
private Session session;
private Transaction tx;
public ContatoControl() {
session = new Configuration().configure().buildSessionFactory().openSession();
tx = session.getTransaction();
}
//Obtem a lista de acordo com o ID
public List<Contato> getLista(Long id) {
List<Contato> contatos = new ArrayList<>();
try {
tx.begin();
contatos = session.createCriteria(Contato.class).add(Restrictions.like("ID", id)).list();
tx.commit();
} catch (Exception ex) {
ex.getStackTrace();
} finally {
session.flush();
session.close();
}
return contatos;
}
//Obtem a lista de acordo com o NOME
public List<Contato> getLista(String nome) {
List<Contato> contatos = new ArrayList<>();
try {
tx.begin();
contatos = session.createCriteria(Contato.class).add(Restrictions.like("NOME", "%" + nome + "%")).list();
tx.commit();
} catch (Exception ex) {
ex.getStackTrace();
} finally {
session.flush();
session.close();
}
return contatos;
}
//Obtem toda a lista dos contatos
public List<Contato> getLista() {
List<Contato> contatos = new ArrayList<>();
try {
tx.begin();
contatos = session.createCriteria(Contato.class).list();
tx.commit();
} catch (Exception e) {
e.getStackTrace();
} finally {
session.flush();
session.close();
}
return contatos;
}
public void excluir(Contato contato) {
try {
tx.begin();
session.delete(contato);
tx.commit();
} catch (HibernateException ex) {
ex.getStackTrace();
} finally {
session.flush();
session.close();
}
}
public void salvar(Contato contato) {
try {
tx.begin();
session.saveOrUpdate(contato);
tx.commit();
} catch (HibernateException ex) {
ex.getStackTrace();
} finally {
session.flush();
session.close();
}
}
}
depois:
public void fillTabela(JTable jTable) {
ContatoControl contatoControl = new ContatoControl();
List<Contato> contatos = contatoControl.getLista();
ContatoTableModel modelo = new ContatoTableModel(contatos);
jTable.setModel(modelo);
}
e o ERRO é esse:
run:
Jun 29, 2012 4:21:56 PM org.hibernate.cfg.Environment <clinit>
Informações: Hibernate 3.2.5
Jun 29, 2012 4:21:56 PM org.hibernate.cfg.Environment <clinit>
Informações: hibernate.properties not found
Jun 29, 2012 4:21:56 PM org.hibernate.cfg.Environment buildBytecodeProvider
Informações: Bytecode provider name : cglib
Jun 29, 2012 4:21:56 PM org.hibernate.cfg.Environment <clinit>
Informações: using JDK 1.4 java.sql.Timestamp handling
Jun 29, 2012 4:21:56 PM org.hibernate.cfg.Configuration configure
Informações: configuring from resource: /hibernate.cfg.xml
Jun 29, 2012 4:21:56 PM org.hibernate.cfg.Configuration getConfigurationInputStream
Informações: Configuration resource: /hibernate.cfg.xml
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.Configuration addResource
Informações: Reading mappings from resource : contato.hbm.xml
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
Informações: Mapping class: hibern.model.Contato -> CONTATO
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.Configuration doConfigure
Informações: Configured SessionFactory: null
Jun 29, 2012 4:21:57 PM org.hibernate.connection.DriverManagerConnectionProvider configure
Informações: Using Hibernate built-in connection pool (not for production use!)
Jun 29, 2012 4:21:57 PM org.hibernate.connection.DriverManagerConnectionProvider configure
Informações: Hibernate connection pool size: 20
Jun 29, 2012 4:21:57 PM org.hibernate.connection.DriverManagerConnectionProvider configure
Informações: autocommit mode: false
Jun 29, 2012 4:21:57 PM org.hibernate.connection.DriverManagerConnectionProvider configure
Informações: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/test
Jun 29, 2012 4:21:57 PM org.hibernate.connection.DriverManagerConnectionProvider configure
Informações: connection properties: {user=root}
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: RDBMS: MySQL, version: 5.5.16
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.13 ( Revision: ${bzr.revision-id} )
Jun 29, 2012 4:21:57 PM org.hibernate.dialect.Dialect <init>
Informações: Using dialect: org.hibernate.dialect.MySQLDialect
Jun 29, 2012 4:21:57 PM org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
Informações: Using default transaction strategy (direct JDBC transactions)
Jun 29, 2012 4:21:57 PM org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
Informações: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Automatic flush during beforeCompletion(): disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Automatic session close at end of transaction: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: JDBC batch size: 15
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: JDBC batch updates for versioned data: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Scrollable result sets: enabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: JDBC3 getGeneratedKeys(): enabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Connection release mode: auto
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Maximum outer join fetch depth: 2
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Default batch fetch size: 1
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Generate SQL with comments: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Order SQL updates by primary key: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Order SQL inserts for batching: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
Informações: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
Jun 29, 2012 4:21:57 PM org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
Informações: Using ASTQueryTranslatorFactory
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Query language substitutions: {}
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: JPA-QL strict compliance: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Second-level cache: enabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Query cache: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory createCacheProvider
Informações: Cache provider: org.hibernate.cache.NoCacheProvider
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Optimize cache for minimal puts: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Structured second-level cache entries: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Statistics: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Deleted entity synthetic identifier rollback: disabled
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Default entity-mode: pojo
Jun 29, 2012 4:21:57 PM org.hibernate.cfg.SettingsFactory buildSettings
Informações: Named query checking : enabled
Jun 29, 2012 4:21:57 PM org.hibernate.impl.SessionFactoryImpl <init>
Informações: building session factory
Jun 29, 2012 4:21:57 PM org.hibernate.impl.SessionFactoryObjectFactory addInstance
Informações: Not binding factory to JNDI, no JNDI name configured
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
Informações: Running hbm2ddl schema update
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
Informações: fetching database metadata
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
Informações: updating schema
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
Informações: table found: test.contato
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
Informações: columns: [id, email, fone, nome]
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
Informações: foreign keys: []
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
Informações: indexes: [primary]
Jun 29, 2012 4:21:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
Informações: schema update complete
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at hibern.tables.ContatoTableModel.<init>(ContatoTableModel.java:24)
at hibern.visualizacao.Principal.fillTabela(Principal.java:156)
at hibern.visualizacao.Principal.<init>(Principal.java:25)
at hibern.visualizacao.Principal$2.run(Principal.java:211)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
mas no código do Netbeans não indica que é um erro.
Alguém pode me ajudar? estou seguindo o exemplo do site http://www.javasimples.com.br/swing-awt/death-to-defaulttablemodel-abstracttablemodel-rulez