Hibernate não persisti no BD - muito estranho

2 respostas
J

Bom dia pessoal,

Estou quebrando a cabeça há quase uma semana e sinceramente não sei mais o que faço, simplesmente a aplicação que comecei parou de salvar no BD. Estava salvando, quando fui colocar uma herança no meio parou, ae não consegui resolver e decidi começar o projeto de novo(estava no começo mesmo), mas mesmo sem herança nem nada, tambem nao salva no BD, agora ateh aparece que tem coisa na tabela, mas quando eu abro as linhas estão todas sem dados nenhum.
Ja vi e revi tudo, ja testei em dois computadores e nada, esta tudo com annotations certinho, mapeado no xml, etc.

Por favor, alguem pode me ajudar?

PessoaFisica
package camisas.modelo;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import javax.persistence.TemporalType;

@Entity
@Table(name = "pessoa_fisica")
public class PessoaFisica implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "nome")
    private String nome;
    
    @Column(name = "cpf")
    private String cpf;

    @Column(name = "sexo")
    private String sexo;
    
    /*@Temporal(TemporalType.DATE)
    @Column(name="data_nascimento")
    private Date dataNascimento;*/
    
    @Column(name = "data_nascimento")
    private String dataNascimento;

    @Column(name = "tel_residencial")
    private String telResidencial;

    @Column(name = "tel_comercial")
    private String telComercial;
    
    @Column(name = "celular")
    private String celular;

    @Column(name = "email")
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(String dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getTelComercial() {
        return telComercial;
    }

    public void setTelComercial(String telComercial) {
        this.telComercial = telComercial;
    }

    public String getTelResidencial() {
        return telResidencial;
    }

    public void setTelResidencial(String telResidencial) {
        this.telResidencial = telResidencial;
    }

}
Action:
package camisas.controle.actions;

import camisas.controle.forms.UsuarioForm;
import camisas.dao.GenericDAO;
import camisas.modelo.PessoaFisica;
import camisas.util.HibernateUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class ManterUsuarioAction extends org.apache.struts.action.Action {
    
    private String retorno;
    
    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        String acao = request.getParameter("acao");

        Session session = HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();

        UsuarioForm usuarioForm = (UsuarioForm) form;
        
        PessoaFisica pf = new PessoaFisica();
        pf.setNome(usuarioForm.getNome());
        pf.setCpf(usuarioForm.getCpf());
        pf.setSexo(usuarioForm.getSexo());
        pf.setDataNascimento(usuarioForm.getDataNascimento());
        pf.setTelResidencial(usuarioForm.getTelResidencial());
        pf.setTelComercial(usuarioForm.getTelComercial());
        pf.setCelular(usuarioForm.getCelular());
        pf.setEmail(usuarioForm.getEmail());

       /* pf.setNome("nome");
        pf.setCpf("111111111111");
        pf.setSexo("M");
        pf.setDataNascimento("[telefone removido]");
        pf.setTelResidencial("333333333333");
        pf.setTelComercial("44444444444444444");
        pf.setCelular("555555555555");
        pf.setEmail("email");*/

        GenericDAO dao = new GenericDAO(session, PessoaFisica.class);

         if (acao.equals("incluir"))
         {

             try {
                 dao.salvar(pf);
             }
             catch (Exception e) {
                e.printStackTrace();
             }
         }

        return mapping.findForward(retorno);
    }
}
GenericDAO
package camisas.dao;

import camisas.util.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;

public class GenericDAO<X> {

    private Class persistentClass;
    protected Session session; 
    protected SessionFactory sessionFactory = HibernateUtil.getSessionFactory();

    public GenericDAO(Session session, Class persistentClass) {
        this.session = session;
        this.persistentClass = persistentClass;
    }

    public void salvar(X x) throws HibernateException {
       try
        {           
            this.session.save(x);         
        }
        catch (HibernateException e)
        {
            System.err.println("Erro ao salvar na base de dados: " + e);
            e.printStackTrace();
        }
    }

    public void atualizar(X x) throws HibernateException {
        try
        {
            this.session.update(x);         
        }
        catch (HibernateException e)
        {
            e.printStackTrace();          
        }
    }

    public void excluir(X x) throws HibernateException {
        try
        {
            this.session.delete(x);         
        }
        catch (HibernateException e)
        {
            e.printStackTrace();          
        }       
    }

    @SuppressWarnings("unchecked")
    public X carregar(int codigo) {
        return (X) this.session.load(persistentClass, codigo);
    }

    @SuppressWarnings("unchecked")
    public List<X> listar() {
        return this.session.createCriteria(persistentClass).list();
    }

    public X carregarPeloId(int id) {
        Criteria c = session.createCriteria(persistentClass);
        c.add(Restrictions.eq("id", id));

        return (X) c.uniqueResult();
    }

}
hibernate config
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/camisas</property>
    <property name="hibernate.connection.username">root</property>
    <mapping class="camisas.modelo.PessoaFisica"/>
  </session-factory>
</hibernate-configuration>
jsp:
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><bean:message key="camisas.titulo"/></title>
        <link rel="stylesheet" href="${pageContext.request.contextPath}/css/camisas.css" type="text/css" />
        <script language="Javascript" type="text/javascript">            
          /*

            //adiciona mascara de cep
            function MascaraCep(cep){
                if(mascaraInteiro(cep)==false){
                    event.returnValue = false;
                }
                return formataCampo(cep, '00.000-000', event);
            }

            //adiciona mascara de data
            function MascaraData(data){
                if(mascaraInteiro(data)==false){
                    event.returnValue = false;
                }
                return formataCampo(data, '00/00/0000', event);
            }

            //adiciona mascara ao telefone
            function MascaraTelefone(tel){
                if(mascaraInteiro(tel)==false){
                    event.returnValue = false;
                }
                return formataCampo(tel, '([telefone removido]', event);
            }

            //adiciona mascara ao CPF
            function MascaraCPF(cpf){
                if(mascaraInteiro(cpf)==false){
                    event.returnValue = false;
                }
                return formataCampo(cpf, '[CPF removido]', event);
            }

            //valida numero inteiro com mascara
            function mascaraInteiro(){
                if (event.keyCode < 48 || event.keyCode > 57){
                    event.returnValue = false;
                    return false;
                }
               return true;
            }

            //formata de forma generica os campos
            function formataCampo(campo, Mascara, evento){
                var boleanoMascara;
                var Digitato = evento.keyCode;
                exp = /\-|\.|\/|\(|\)| /g
                campoSoNumeros = campo.value.toString().replace( exp, "" );

                var posicaoCampo = 0;
                var NovoValorCampo="";
                var TamanhoMascara = campoSoNumeros.length;;

                if (Digitato != 8){ // backspace
                    for(i=0; i<= TamanhoMascara; i++) {
                        boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                                               || (Mascara.charAt(i) == "/"))
                        boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(")
                                                               || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "))
                        if (boleanoMascara) {
                                NovoValorCampo += Mascara.charAt(i);
                                  TamanhoMascara++;
                        }else {
                                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);
                                posicaoCampo++;
                        }
                    }
                    campo.value = NovoValorCampo;
                    return true;
                }
                else {
                    return true;
                }
            }

            //valida campos vazios no formulario
            function ValidarForm()
            {
                d = document.UsuarioForm;

                //validar nome
                if (d.nome.value == "")
                {
                    alert("Por favor, digite o seu nome!");
                    d.nome.focus();
                    return false;
                }

                if (d.email.value == "")
                {
                    alert("Por favor, informe seu e-mail!");
                    d.email.focus();
                    return false;
                }            

                //validar login
                if (d.login.value == "")
                {
                    alert("Por favor, informe o seu login!");
                    d.login.focus();
                    return false;
                }

                if (d.senha.value == "" || d.senha2.value == "")
                {
                    alert("Por favor, informe sua senha!");
                    d.senha.value="";
                    d.senha2.value="";
                    d.senha.focus();
                    return false; 
                }

                //validar as duas senhas
                if (d.senha.value != d.senha2.value)
                {
                    alert("Senhas não conferem. Por favor, digite novamente!");
                    d.senha.value="";
                    d.senha2.value="";
                    d.senha.focus();
                    return false;
                }
            }

            //valida telefone
            function ValidaTelefone(tel){
                exp = /\(\d{2}\)\ \d{4}\-\d{4}/
                if(!exp.test(tel.value))
                {
                    alert('Telefone inválido!!');
                    tel.value="";
                    tel.focus();
                    return false;
                }
            }

            //valida CEP
            function ValidaCep(cep){
                exp = /\d{2}\.\d{3}\-\d{3}/
                if(!exp.test(cep.value))
                {
                    alert('CEP inválido!');
                    cep.value="";
                    cep.focus();
                    return false;
                }
            }

            //valida data
            function ValidaData(){
                 dia = (document.forms[0].dataNascimento.value.substring(0,2));
                 mes = (document.forms[0].dataNascimento.value.substring(3,5));
                 ano = (document.forms[0].dataNascimento.value.substring(6,10));

                situacao = "";

                // verifica o dia valido para cada mes
                if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) {
                    situacao = "falsa";
                }

                // verifica se o mes e valido
                if (mes < 01 || mes > 12 ) {
                    situacao = "falsa";
                }

                // verifica se e ano bissexto
                if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) {
                    situacao = "falsa";
                }

                if (document.forms[0].dataNascimento.value == "") {
                    situacao = "falsa";
                }

                if (situacao == "falsa") {
                    alert("Data inválida!");
                    document.forms[0].dataNascimento.value="";
                    document.forms[0].dataNascimento.focus();
                }
            }

            //valida o CPF digitado
            function ValidarCPF(Objcpf){
                //var cpf = Objcpf.value;
                var cpf = document.forms[0].cpf.value;
                exp = /\.|\-/g
                cpf = cpf.toString().replace( exp, "" );
                var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
                var soma1=0, soma2=0;
                var vlr =11;

                for(i=0;i<9;i++){
                    soma1+=eval(cpf.charAt(i)*(vlr-1));
                    soma2+=eval(cpf.charAt(i)*vlr);
                    vlr--;
                }
                soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
                soma2=(((soma2+(2*soma1))*10)%11);

                var digitoGerado=(soma1*10)+soma2;
                if(digitoGerado!=digitoDigitado)
                {
                    alert('CPF inválido!');
                    Objcpf.value="";
                    Objcpf.focus();
                    return false;
                }
            }*/
        </script>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/manterUsuario.do?acao=incluir" method="post" name="UsuarioForm" onSubmit="return ValidarForm()">
            <fieldset>
                <legend>Dados Pessoais</legend>
                <table>
                    <tr>
                        <td width="150"><label>Nome:</label></td>
                        <td><input type="text" name="nome" size="60" maxlength="60" /></td>
                    </tr>
                    <tr>
                        <td><label>CPF:</label></td>
                        <td><input type="text" name="cpf" maxlength="14" onkeypress="MascaraCPF(UsuarioForm.cpf);" onblur="ValidarCPF(UsuarioForm.cpf);" /></td>
                    </tr>
                    <tr>
                        <td><label>Sexo:</label></td>
                        <td>
                            <input type="radio" name="sexo" value="M" />Masculino
                            <input type="radio" name="sexo" value="F" />Feminino
                        </td>
                    </tr>
                    <tr>
                        <td><label>Data Nascimento:</label></td>
                        <td><input type="text" name="dataNascimento" maxlength="10" onkeypress="MascaraData(UsuarioForm.dataNascimento);" onblur="ValidaData();" /></td>
                    </tr>
                    <tr>
                        <td><label>Telefone Residencial:</label></td>
                        <td>                            
                            <input type="text" name="telResidencial" maxlength="14" onkeypress="MascaraTelefone(UsuarioForm.telResidencial);" onblur="ValidaTelefone(UsuarioForm.telResidencial);" />
                        </td>
                    </tr>
                    <tr>
                        <td><label>Telefone Comercial:</label></td>
                        <td>                            
                            <input type="text" name="telComercial" maxlength="14" onkeypress="MascaraTelefone(UsuarioForm.telComercial);" onblur="ValidaTelefone(UsuarioForm.telComercial);" />
                        </td>
                    </tr>
                    <tr>
                        <td><label>Celular:</label></td>
                        <td>                           
                            <input type="text" name="celular" maxlength="14" onkeypress="MascaraTelefone(UsuarioForm.celular);" onblur="ValidaTelefone(UsuarioForm.celular);" />
                        </td>
                    </tr>
                    <tr>
                        <td><label>Email:</label></td>
                        <td><input type="text" name="email" id="email" mask="email" /></td>
                    </tr>
                </table>
            </fieldset>
            <br />
            <fieldset>
                <legend>Endereço</legend>
                <table>
                    <tr>
                        <td width="150"><label>Logradouro:</label></td>
                        <td><input type="text" name="logradouro" /></td>
                    </tr>
                    <tr>
                        <td><label>Numero:</label></td>
                        <td><input type="text" name="numero" /></td>
                    </tr>
                    <tr>
                        <td><label>Complemento:</label></td>
                        <td><input type="text" name="complemento" /></td>
                    </tr>
                    <tr>
                        <td><label>Bairro:</label></td>
                        <td><input type="text" name="bairro" /></td>
                    </tr>
                    <tr>
                        <td><label>Cidade:</label></td>
                        <td><input type="text" name="cidade" /></td>
                    </tr>
                    <tr>
                        <td><label>CEP:</label></td>
                        <td><input type="text" name="cep" maxlength="9" onkeypress="Mascara('cep', window.event.keyCode, 'document.UsuarioForm.cep');" /></td>
                    </tr>
                    <tr>
                        <td><label>Estado:</label></td>
                        <td>
                            <select name="idEstado">
                                <c:forEach var="listaEstados" items="${listaEstados}">
                                    <option value="${listaEstados.id}">${listaEstados.nome}</option>
                                </c:forEach>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td><label>País:</label></td>
                        <td><input type="text" name="pais" /></td>
                    </tr>
                </table>
            </fieldset>
            <br />
            <fieldset>
                <legend>Dados de Acesso</legend>
                <table>
                    <tr>
                        <td width="150"><label>Login:</label></td>
                        <td><input type="text" name="login" /></td>
                    </tr>
                    <tr>
                        <td><label>Senha:</label></td>
                        <td><input type="password" name="senha" /></td>
                    </tr>
                    <tr>
                        <td><label>Confirme a enha:</label></td>
                        <td><input type="password" name="senha2" /></td>
                    </tr>
                </table>
            </fieldset>
            <input type="submit" value=" Enviar " />
            <input type="button" value=" Cancelar " onClick="javascript:window.location='${pageContext.request.contextPath}/inicio.do'" />
        </form>
    </body>
</html>

2 Respostas

L

Colega pode ser a falta de um commit!
tente o seguinte:

session.connection().commit();
tonydesign

Ae primeiro voce tem que verificar se os dados do formulario estao chegando na sua Action

entao faça isso na Action apos os dados setados

JOptionPane.showMessageDialog(null, usuarioForm.getNome());
JOptionPane.showMessageDialog(null, usuarioForm.getCpf());
JOptionPane.showMessageDialog(null, usuarioForm.getSexo());
JOptionPane.showMessageDialog(null, usuarioForm.getDataNascimento());
JOptionPane.showMessageDialog(null, usuarioForm.getTelResidencial());
JOptionPane.showMessageDialog(null, usuarioForm.getTelComercial());
JOptionPane.showMessageDialog(null, usuarioForm.getCelular());
JOptionPane.showMessageDialog(null, usuarioForm.getEmail());

Ve se voce consegue visualizar os dados resgatados !!

Criado 6 de maio de 2010
Ultima resposta 6 de mai. de 2010
Respostas 2
Participantes 3