Hibernate Problema ao persistir classe Consulta

3 respostas
A

boa tarde amigos
tenho um banco de dados com uma tabela paciente e outra consulta
um paciente pode realizar várias consultas. usando hibernate consigo persistir normalmente para a tabela paciente, mas quando tento persistir
para a tabela consulta, ocorrre uma erro
aqui está o código para persisttir o objeto consulta:

public class ConsultaDAO {
	public void marcarConsulta(String cpf, String data, String hora,
			String situacao) {
		Consulta consulta = new Consulta();
		consulta.setData(data);
		consulta.setHora(hora);
		consulta.setSituacao(situacao);

		Paciente paciente = new Paciente();
		paciente.setCpf("123456");
		paciente.setNome(" ");
		paciente.setEndereco(" ");
		paciente.setTelefone(" ");
		consulta.setPaciente(paciente);
		Session sessao=HibernateUtil.getSessao();
		Transaction tx=sessao.beginTransaction();
		sessao.save(consulta);
	    tx.commit();
		sessao.flush();
		sessao.close();
	}
}

nesse método eu crio objeto paciente e seto ele com seu cpf, que no modelo relacional será chave estrangeira da tabela Consulta, mas só que que esse paciente já está no banco. será que é isso que eu estou errando. será que eu tenho que retorna esse paciente do banco para depois setar ele no objeto consulta.
o erro que ocorre é o seguinte:

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
	org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
	org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
	org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:181)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
	dao.ConsultaDAO.marcarConsulta(ConsultaDAO.java:31)
	controle.MarcarConsulta.doPost(MarcarConsulta.java:25)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

o meu Consulta.hbm.xml é o seguinte:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 16/05/2007 11:54:46 by Hibernate Tools 3.2.0.b9 -->
<hibernate-mapping>
    <class name="modelo.Consulta" table="consulta" schema="public">
        <id name="codcons" type="int">
            <column name="codcons" />
            <generator class="increment" />
        </id>
       <many-to-one name="paciente" class="modelo.Paciente"   fetch="select" >
            <column name="cpf" length="14" not-null="true" />
        </many-to-one>
        <property name="data" type="string">
            <column name="data" length="10" not-null="true" />
        </property>
        <property name="hora" type="string">
            <column name="hora" length="8" not-null="true" />
        </property>
        <property name="situacao" type="string">
            <column name="situacao" length="15" />
        </property>
        <set name="procedimentosrealizadoses" inverse="true">
            <key>
                <column name="codcons" not-null="true" />
            </key>
            <one-to-many class="modelo.Procedimentosrealizados" />
        </set>
        <set name="receitas" inverse="true">
            <key>
                <column name="codcons" not-null="true" />
            </key>
            <one-to-many class="modelo.Receita" />
        </set>
    </class>
</hibernate-mapping>

3 Respostas

filipeandrep

vc poderia enviar os seus beans?

A
package modelo;

// Generated 16/05/2007 11:54:46 by Hibernate Tools 3.2.0.b9

import java.util.HashSet;
import java.util.Set;

/**
 * Consulta generated by hbm2java
 */
public class Consulta implements java.io.Serializable {

	private int codcons;

	private Paciente paciente;

	private String data;

	private String hora;

	private String situacao;

	private Set procedimentosrealizadoses = new HashSet(0);

	private Set receitas = new HashSet(0);

	public Consulta() {
	}

	public Consulta(int codcons, Paciente paciente, String data, String hora) {
		this.codcons = codcons;
		this.paciente = paciente;
		this.data = data;
		this.hora = hora;
	}

	public Consulta(int codcons, Paciente paciente, String data, String hora,
			String situacao, Set procedimentosrealizadoses, Set receitas) {
		this.codcons = codcons;
		this.paciente = paciente;
		this.data = data;
		this.hora = hora;
		this.situacao = situacao;
		this.procedimentosrealizadoses = procedimentosrealizadoses;
		this.receitas = receitas;
	}

	public int getCodcons() {
		return this.codcons;
	}

	public void setCodcons(int codcons) {
		this.codcons = codcons;
	}

	public Paciente getPaciente() {
		return this.paciente;
	}

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

	public String getData() {
		return this.data;
	}

	public void setData(String data) {
		this.data = data;
	}

	public String getHora() {
		return this.hora;
	}

	public void setHora(String hora) {
		this.hora = hora;
	}

	public String getSituacao() {
		return this.situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

	public Set getProcedimentosrealizadoses() {
		return this.procedimentosrealizadoses;
	}

	public void setProcedimentosrealizadoses(Set procedimentosrealizadoses) {
		this.procedimentosrealizadoses = procedimentosrealizadoses;
	}

	public Set getReceitas() {
		return this.receitas;
	}

	public void setReceitas(Set receitas) {
		this.receitas = receitas;
	}

}
package modelo;

// Generated 16/05/2007 11:54:46 by Hibernate Tools 3.2.0.b9

import java.util.HashSet;
import java.util.Set;

/**
 * Paciente generated by hbm2java
 */
public class Paciente implements java.io.Serializable {

	private String cpf;

	private String nome;

	private String endereco;

	private String telefone;

	private Set consultas = new HashSet(0);

	public Paciente() {
	}

	public Paciente(String cpf) {
		this.cpf = cpf;
	}

	public Paciente(String cpf, String nome, String endereco, String telefone,
			Set consultas) {
		this.cpf = cpf;
		this.nome = nome;
		this.endereco = endereco;
		this.telefone = telefone;
		this.consultas = consultas;
	}

	public String getCpf() {
		return this.cpf;
	}

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

	public String getNome() {
		return this.nome;
	}

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

	public String getEndereco() {
		return this.endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getTelefone() {
		return this.telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public Set getConsultas() {
		return this.consultas;
	}

	public void setConsultas(Set consultas) {
		this.consultas = consultas;
	}

}

está aqui os beans, por favor vê se tu consegues me ajudar, pois não sei mas o que fazer.

D

cara tenta mudar o tipo de codcons para Integer…
ao inves de private int codcons; faça private Integer codcons;

Criado 18 de maio de 2007
Ultima resposta 19 de jul. de 2007
Respostas 3
Participantes 3