Problema ao realizar o cadastro

3 respostas
C

Boa noite gente.

Eu sou novo por aqui, e também iniciei um projeto usando JSF, a IDE que estou usando e o NetBeans.

Estou tendo um problema ao realizar o cadastrado de um paciente, abaixo esta a arquitetura de minha aplicação e o erro capiturado no debug.

Minha classe DAO, responsável por realizar o cadastro, atualização, remoção e etc.

import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.maternidade.sim.core.HibernateUtil;
import org.maternidade.sim.model.Paciente;
/**
 *
 * @author caraujo
 */
public class CoreDao implements Dao{
    
    /** Creates a new instance of CoreDao */
    public CoreDao() {
    }

    public void save(Object object) {
        Session session = HibernateUtil.currentSession();
        Transaction tx = session.beginTransaction();
        session.save(object);
        tx.commit();
        HibernateUtil.closeSession();
     
    }

    public void update(Object object) {
        Session session = HibernateUtil.currentSession();
        Transaction tx = session.beginTransaction();
        session.update(object);
        tx.commit();
.........

Minha classe que chama o métodos, esse classe eu registro no faces-config como meu managed-bean de paciente.
Abaixo o código.

package org.maternidade.sim.negocio;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.maternidade.sim.dao.CoreDao;
import org.maternidade.sim.model.*;

/**
 *  @netbeans.hibernate.facade beanClass=org.maternidade.sim.model.Paciente
 */
public class PacienteFacade { 
    
    //Instancia de objeto de funcionario e Dao
    public static CoreDao dao = new CoreDao();
    private Paciente paciente = new Paciente();
    
    public String savePaciente(){
        
        String result;
        
        try{
            
            dao.save(getPaciente());
            result ="cadastrado";
            
        }catch(Exception e){
            System.out.println(e.getMessage());
            result = "ncadastrado";
        }
        
        return result;
    }

    public Paciente getPaciente() {
        return paciente;
    }

    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }
    
}

Na minha interface tenho um commandButton que seu action desparando esse método savePaciente.

<h:commandButton styleClass="botao" value="Salvar" action="#{PacienteBean.savePaciente}"/>

No debug peguei o seguinte erro.

log4j:WARN Please initialize the log4j system properly.
Hibernate: select this_.id as id0_0_, this_.nome as nome0_0_, this_.dtnascimento as dtnascim3_0_0_, this_.login as login0_0_, this_.senha as senha0_0_, this_.TYPEFUNCIONARIO_FK as TYPEFUNC6_0_0_ from FUNCIONARIO this_ where this_.login=?

[b]IllegalArgumentException occurred while calling setter of org.maternidade.sim.model.Paciente.id[/b]

O que seria esse erro?

3 Respostas

P

deve ter alguma coisa errada no seu mapeamento do Hibernate, provavelmente com tipo de dados, mais especificamente o campo Id da classe Paciente…verifica isso…

espero ter ajudado…

flw

C

“pedrobusko”:
deve ter alguma coisa errada no seu mapeamento do Hibernate, provavelmente com tipo de dados, mais especificamente o campo Id da classe Paciente…verifica isso…

espero ter ajudado…

flw

O campo ID em minha tabela no banco de dados esta como alto incremento.

Estou populando o objeto paciente, menos o ID.

E passo para o save de meu DAO.

Tenho uma dúvida em quanto eu passar um atributo do tipo Object para ser salvo…ele ira saber que e um paciente?

C

Creio eu que não, você pode fazer um cast explicito, ou simplesmente passar o Objeto Paciente, de uma olhada sobre como fazer um DAO genérico.

Criado 22 de fevereiro de 2007
Ultima resposta 23 de fev. de 2007
Respostas 3
Participantes 3