Erro quando Incluir no banco usando o Hibernate

4 respostas
diegocrs

Estou tendo um problema para incluir os dados...
estou usando o Hibernate e o Servlet para fazer todo o controle...
abaixo estou enviando os codigos:

SERVLET

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package SysAc.web;

import java.io.IOException;
import java.net.*;
import java.util.List;
import javax.servlet.*;
import javax.servlet.http.*;
import SysAc.Pessoa;
import SysAc.dao.*;
import gamasouza.Aluno;
import java.util.Date;
import gamasouza.*;

/**
 *
 * @author Didi
 */
public class ServletSys extends javax.servlet.http.HttpServlet {   
   
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String cmd=request.getParameter("cmd");
        if(cmd==null){
            cmd ="principal";
        }
        InterfaceSysAc dao;
        Aluno aluno = new Aluno();
        
        String codigo = request.getParameter("codigo");
        String nome = request.getParameter("nome");
        String rg = request.getParameter("rg");
        String cpf = request.getParameter("cpf");
        String nascimento = request.getParameter("nascimento");
        
        if(cmd==null || !cmd.equalsIgnoreCase("principal")){
            aluno.setCodigo(Integer.parseInt(codigo));
            aluno.setPessoa(nome);
            aluno.setRG(Integer.parseInt(rg));
            aluno.setCPF(Integer.parseInt(cpf));
            
        }
        try
        {
            dao = new SysAcDAO();
            RequestDispatcher rd = null;
            
            /*Condição pra LISTAR as Informações*/
            if (cmd.equalsIgnoreCase("listar")){
                List pessoaList = dao.todosPessoa();
                request.setAttribute("pessoaList", pessoaList);
                rd = request.getRequestDispatcher("/jCadAlunoPesq.jsp");
                
            } 
            /*Condição para salvar as Informações*/
            else if (cmd.equalsIgnoreCase("addliv")){
                dao.salvar(aluno);
                rd = request.getRequestDispatcher("/sucesso.html");
            }
        }catch(Exception e)
        {
            e.printStackTrace();
            throw new ServletException(e);
        }       
    } 

}
Minha classe DAO:
package SysAc.dao;

import SysAc.dao.*;
import gamasouza.Aluno;
import java.util.List;
import javax.management.Query;
import SysAc.Pessoa;
import SysAc.util.ConnectSysAcFactory;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class SysAcDAO implements InterfaceSysAc {

    private Session session;
    
    public void salvar(Aluno aluno){
        session = ConnectSysAcFactory.getInstance();         
        Transaction t = null;
        
        try {
            t = session.beginTransaction();
            session.save(aluno);
            t.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            t.rollback();
        }
        finally{
            session.close();
        }
    }

public void excluir(Pessoa cliente){
   session = ConnectSysAcFactory.getInstance();
        Transaction t = null;
        
        try {
            t = session.beginTransaction();
            session.delete(cliente);
            t.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            t.rollback();
        }
        finally{
            session.close();
        }
}

public void atualizar(Pessoa cliente){
       session = ConnectSysAcFactory.getInstance();
        Transaction t = null;
        
        try {
            t = session.beginTransaction();
            session.update(cliente);
            t.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            t.rollback();
        }
        finally{
            session.close();
        }
}

public List todosPessoa(){
    session = ConnectSysAcFactory.getInstance();
    List list = session.createQuery("from Cliente").list();
    return list;
}
public List consultarPessoa(String cliente){
    session = ConnectSysAcFactory.getInstance();
        org.hibernate.Query query = session.createQuery(
            "from Cliente cli where cli.cliente like :cliente");
    List list = query.setString("cliente", "%"+cliente+"%").list();
    
    return list;
}

}

Minha Interface:

package SysAc.dao;

import SysAc.dao.*;
import gamasouza.Aluno;
import java.util.List;
import SysAc.Pessoa;

public interface  InterfaceSysAc {

    
    public abstract void salvar(Aluno aluno);
    //public abstract void salvar(Pessoa pessoa);
    public abstract void excluir(Pessoa pessoa); 
    public abstract void atualizar(Pessoa pessoa);
    public abstract List todosPessoa();
    public abstract List consultarPessoa(String pessoa);

}

Agora Vem minhas classes:

Pessoa

package gamasouza;

import java.util.Date;
import java.util.Collection;
import javax.persistence.*;
@Entity
@Table (name="pessoa")
@SuppressWarnings("serial")
public class Pessoa implements java.io.Serializable {
    
    @Id
    @Column(name="codigo")
    private int codigo;
    @Column(name="nome")
    private String nome;
    @Column(name="nascimento")
    @Temporal(TemporalType.TIMESTAMP)
    private Date nascimento;
    @OneToMany(cascade=CascadeType.ALL, mappedBy="pessoa")
    private Collection<Aluno> aluno;
    @OneToMany(cascade=CascadeType.ALL, mappedBy="pessoa")
    private Collection<Professor> professor;
    
    public Pessoa() {
    }

    public Pessoa(int codigo, String nome, Date nascimento) {

        this.codigo = codigo;
        this.nome = nome;
        this.nascimento = nascimento;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setPessoa(String nome) {
        this.nome = nome;

    }

    public String getPessoa() {
        return nome;
    }
    public void setNasc(Date nasc) {
        nascimento = nasc;

    }

    public Date getNasc() {
        return nascimento;
    }
   
}

Aluno

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gamasouza;
import java.util.Date;
import java.util.Collection;
import javax.persistence.*;
@Entity
@Table (name="aluno")
@SuppressWarnings("serial")

public class Aluno extends Pessoa implements java.io.Serializable {
    
    @Column(name="cpf")
    private int CPF;
    
    @Column(name="rg")
    private int RG;
    
    public Aluno() {
    }
    
    public Aluno (int codigo, String nome, Date nascimento,int CPF, int RG) {

        super(codigo, nome, nascimento);
        this.CPF = CPF;
        this.RG = RG;
    }
    public void setCPF(int CPF) {
        this.CPF = CPF;
    }

    public int getCPF() {
        return CPF;
    }
    
    public void setRG(int RG) {
        this.RG = RG;
    }

    public int getRG() {
        return RG;
    }

}

Professor:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gamasouza;

import java.util.Date;
import javax.persistence.*;

@Entity
@Table (name="professor")
@SuppressWarnings("serial")
public class Professor extends Pessoa implements java.io.Serializable {
    
    @Column(name="graduacao")
    private String graduacao;
    
    public Professor() {
    }
    
    public Professor (int codigo, String nome, Date nascimento,String gradu) {

        super(codigo, nome, nascimento);
        graduacao = gradu;
    }
    public void setGraduacao(String gradu) {
        graduacao = gradu;
    }

    public String getGraduacao() {
        return graduacao;
    }
    
}

O que pode estar dando errado? Alguem pode me ajudar?

4 Respostas

diegocrs

Alguém pode dar uma ajuda aí…
rs

rodrigo_rosalin

Poste a exception gerada.

diegocrs

Só quero saber se a Anotação que fiz… estar certo?
Alguem pode olhar pra mim e dar uma LUZ aí

Vlw

diegocrs

Alguem pode dar uma ajudinha por favor"

Criado 28 de março de 2009
Ultima resposta 31 de mar. de 2009
Respostas 4
Participantes 2