Boa noite a todos.
Estou tentando fazer um programa sobre uma loja de informatica utilizando o hibernate e estou com um problema nas operações de controle para inclusão de dados no banco. Me parece que a minha classe de controle consegue estabelecer a conexão com o banco porém quando em clico em “Incluir” dá erro.
Eu fiz esta classe de controle parecida com uma outra que o professor havia passado em sala de aula porém por ainda estar iniciando nessa area de programação estou com bastante dificuldade em encontrar o erro.
[color=red]
Segue a classe de controle:[/color]
package Controle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.xml.bind.ParseConversionEvent;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import Cliente.cliente;
import DAO.DAOPessoaFisica;
import Pessoa.pessoaFisica;
import Produto.produto;
import visao.CadastroPF;
import Tarefas.compra;
public class controlePessoaFisica implements ActionListener {
private JFrame visao = null;
private JPanel painel = null;
private pessoaFisica pessoafisica = null;
private cliente cliente = null;
private produto produto = null;
private compra compra = null;
private CadastroPF cadastroPF = null;
private DAOPessoaFisica dao = null;
private JTextField txtNome = null;
private JTextField txtRg = null;
private JTextField txtCpf = null;
private JTextField txtDatNasc = null;
private JTextField txtRua = null;
private JTextField txtNumero = null;
private JTextField txtComplemento = null;
private JTextField txtBairro = null;
private JTextField txtCidade = null;
private JTextField txtCep = null;
private JTextField txtTelefone = null;
private JTextField txtEmail = null;
private JRadioButton rdbtnMasculino = null;
private JRadioButton rdbtnFeminino = null;
public void actionPerformed(ActionEvent e) {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
pessoaFisica pf = new pessoaFisica();
if (e.getActionCommand() == "Incluir"){
pessoafisica = new pessoaFisica();
pessoafisica.setNome(txtNome.getText());
pessoafisica.setRg(txtRg.getText());
pessoafisica.setCpf(txtCpf.getText());
//pessoafisica.setDataNasc(txtDatNasc.getText()); Falta tratar a data de nascimento
pessoafisica.setLogradouro(txtRua.getText());
pessoafisica.setNumero((Integer.parseInt(txtNumero.getText())));
pessoafisica.setComplemento(txtComplemento.getText());
pessoafisica.setBairro(txtBairro.getText());
pessoafisica.setCidade(txtCidade.getText());
pessoafisica.setCep(txtCep.getText());
pessoafisica.setTelefone(txtTelefone.getText());
pessoafisica.setEmail(txtEmail.getText());
session.saveOrUpdate(pessoafisica);
tx.commit();
session.close();
}else {
JOptionPane.showMessageDialog(null, "Erro");
}
}
{
}
{ }
else if (e.getSource() == cadastroPF.btnConsultar) {
if( cadastroPF.txtCPF.getText().equals("") ) {
JOptionPane.showMessageDialog(null, "Insira o CPF para a consulta!");
} else {
int cpf = Integer.parseInt( cadastroPF.txtCPF.getText() );
pessoafisica = dao.buscar(pessoafisica);
if( pessoafisica == null ) {
JOptionPane.showMessageDialog(null, "Usuário não encontrado");
} else {
cadastroPF.txtNome.setText( pessoafisica.getNome() );
cadastroPF.txtRg.setText((Integer.toString(pessoafisica.getRg());
cadastroPF.txtCPF.setText(pessoafisica.getCpf());
cadastroPF.txtDatNasc.setText(pessoafisica.getDataNasc().toString());
cadastroPF.txtTelefone.setText( pessoafisica.getTelefone());
cadastroPF.txtEmail.setText( pessoafisica.getEmail());
cadastroPF.txtRua.setText( pessoafisica.getLogradouro() );
cadastroPF.txtNumero.setText(Integer.toString(pessoafisica.getNumero()));
cadastroPF.txtComplemento.setText(pessoafisica.getComplemento());
cadastroPF.txtBairro.setText(pessoafisica.getBairro());
cadastroPF.txtCidade.setText(pessoafisica.getCidade());
cadastroPF.txtCep.setText(pessoafisica.getCep());
}
}
}
else if (e.getSource() == cadastroPF.btnSair) {
cadastroPF.dispose();
}
else if (e.getSource() == cadastroPF.btnLimpar){
cadastroPF.txtNome.setText(null);
cadastroPF.txtRg.setText((null);
cadastroPF.txtCPF.setText(null);
cadastroPF.txtDatNasc.setText(null);
cadastroPF.txtTelefone.setText(null);
cadastroPF.txtEmail.setText(null);
cadastroPF.txtRua.setText(null);
cadastroPF.txtNumero.setText(null);
cadastroPF.txtComplemento.setText(null);
cadastroPF.txtBairro.setText(null);
cadastroPF.txtCidade.setText(null);
cadastroPF.txtCep.setText(null);
}
else if (e.getSource() == cadastroPF.btnAlterar){
if( cadastroPF.txtNome.getText().equals("") || cadastroPF.txtCPF.getText().equals("") ) {
JOptionPane.showMessageDialog(null,"Insira todos os Dados!");
} else {
if( dao.alterar(pessoafisica) ) {
JOptionPane.showMessageDialog(null, "Pessoa cadastrada com Sucesso");
} else {
JOptionPane.showMessageDialog(null, "Erro");
} }
}
public void abrir() {
cadastroPF.setVisible(true);
}
}
[color=red]DAO[/color]
package DAO;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import Pessoa.pessoaFisica;
import Util.CriarSessionFactory;
public class DAOPessoaFisica {
private Session session = null;
public DAOPessoaFisica() {
try {
if( session == null ) {
session = CriarSessionFactory.getSessionFactory().openSession();
}
} catch (Exception e) {
}
}
public boolean incluir(pessoaFisica pessoafisica) {
try {
session.beginTransaction();
session.save( pessoafisica );
session.getTransaction().commit();
return true;
} catch (Exception e) {
System.out.println("DAOPessoaFisica Erro: " + e);
return false;
}
}
public boolean alterar(pessoaFisica pessoafisica) {
try {
session.beginTransaction();
session.update( pessoafisica );
session.getTransaction().commit();
return true;
} catch (Exception e) {
System.out.println("DAOPessoaFisica Erro: " + e);
return false;
}
}
public boolean excluir(pessoaFisica pessoafisica) {
try {
session.beginTransaction();
session.delete( pessoafisica );
session.getTransaction().commit();
return true;
} catch (Exception e) {
System.out.println("DAOPessoaFisica: " + e);
return false;
}
}
public pessoaFisica buscar(pessoaFisica pessoafisica) {
try {
session.beginTransaction();
session.getTransaction().commit();
return pessoafisica;
} catch (Exception e) {
System.out.println("DAOProduto Erro: " + e);
return null;
}
}
public List<Produto> relatorio( ) {
try {
session.beginTransaction();
Criteria criteria = this.session.createCriteria(Produto.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
session.getTransaction().commit();
return criteria.list();
} catch (Exception e) {
System.out.println("DAOProduto Erro: " + e);
return null;
}
}
[color=red]O erro:[/color]
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Controle.controlePessoaFisica.actionPerformed(controlePessoaFisica.java:59)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
O erro está aqui neste trecho pessoafisica.setNome(txtNome.getText());
.
Agora minhas perguntas são:
1 - Como eu faço para pegar estes dados da tela e gravar no banco?
2 - Caso esta tela tenha campo de várias tabelas, tem como fazer esta inserção?
Quem puder me ajudar, ou até mesmo dar uma dica eu agradeço pois já pesquisei sobre isto mas nenhuma das informações que obtive resultou na resolução do problema.
Desde já agradeço.
Abs
Carlos