Hbernate: Erro ao gravar dados

Boa noite pessoal, estou desenvolvendo uma aplicação utilizando Hibernate porém ao gravar as informações gera esta exceção, poderiam me ajudar a respeito?

Desde já, agradeço. :slight_smile:

run:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select pessoa_.idpessoa, pessoa_.nomepessoa as nomepessoa1_, pessoa_.rg as rg1_, pessoa_.cpf as cpf1_, pessoa_.email as email1_, pessoa_.endereco as endereco1_, pessoa_.complemento as compleme7_1_, pessoa_.bairro as bairro1_, pessoa_.cep as cep1_, pessoa_.uf as uf1_, pessoa_.cidade as cidade1_, pessoa_.telres as telres1_, pessoa_.telcel as telcel1_, pessoa_.telcom as telcom1_, pessoa_.sexo as sexo1_, pessoa_.dtnasc as dtnasc1_, pessoa_.numero as numero1_, pessoa_.tip_logr as tip18_1_ from public.pessoa pessoa_ where pessoa_.idpessoa=?
Hibernate: insert into public.paciente (tipopele, tiposangue, nompai, nommae, altura, peso, idpaciente) values (?, ?, ?, ?, ?, ?, ?)
06/06/2011 23:14:22 pep.business.bo.PacienteBO addPaciente
GRAVE: null
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
	at pep.integration.dao.DAOHibernateImpl.commit(DAOHibernateImpl.java:33)
	at pep.integration.dao.DAOHibernateImpl.adiciona(DAOHibernateImpl.java:66)
	at pep.integration.dao.postgresql.PacienteDbDAO.manterPaciente(PacienteDbDAO.java:20)
	at pep.integration.dao.PepPST.manterPaciente(PepPST.java:29)
	at pep.business.bo.PacienteBO.addPaciente(PacienteBO.java:34)
	at pep.business.bo.PacienteBO.addPacienteBO(PacienteBO.java:30)
	at pep.business.bd.PacienteBD.addPacienteBO(PacienteBD.java:20)
	at pep.client.FormPaciente.gravar(FormPaciente.java:774)
	at pep.client.FormPaciente.jGravarActionPerformed(FormPaciente.java:744)
	at pep.client.FormPaciente.access$100(FormPaciente.java:12)
	at pep.client.FormPaciente$2.actionPerformed(FormPaciente.java:183)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6289)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6054)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4652)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4482)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4482)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
	at java.awt.EventQueue.access$000(EventQueue.java:85)
	at java.awt.EventQueue$1.run(EventQueue.java:603)
	at java.awt.EventQueue$1.run(EventQueue.java:601)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:617)
	at java.awt.EventQueue$2.run(EventQueue.java:615)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.sql.BatchUpdateException: Entrada em lote 0 insert into public.paciente (tipopele, tiposangue, nompai, nommae, altura, peso, idpaciente) values (, , kkaskskl, sdlkjflsjdflkjdfldskjfklsdj, 1.58, 51.0, 34) foi abortada. Chame getNextException para ver a causa.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2537)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1328)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:351)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2674)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
	... 54 more

Poste suas classes aki pq dah erro de relacionamento, vc tenta salvar os dados numa tabela(PACIENTE) e ela se relaciona com a tabela (PESSOA) mas ao passar algum dos dados de pessoa pra paciente esse dado, geralmente o id, não existe na tabela pessoa, como está muito confuso o erro é melhor ver as suas 2 tabelas ou vc explicar o q acabei de falar…

Classe Pessoa, eu estou com um problema nessa classe pois ela deveria ser herança mas não consegui fazer com que o Hibernate entendesse isso, então resolvi deixar como ele mapeou…

[code]package pep.business.to;
// Generated 31/05/2011 10:30:30 by Hibernate Tools 3.2.1.GA

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

/**

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

    private int idpessoa;
    private String nomepessoa;
    private String rg;
    private String cpf;
    private String email;
    private String endereco;
    private String complemento;
    private String bairro;
    private String cep;
    private String uf;
    private String cidade;
    private String telres;
    private String telcel;
    private String telcom;
    private char sexo;
    private Date dtnasc;
    private String numero;
    private String tipLogr;
    private Set pacientes = new HashSet(0);
    private Set funcionarios = new HashSet(0);
    private Set contatos = new HashSet(0);
    private Set medicos = new HashSet(0);
    private Set tippesenhs = new HashSet(0);

    public Pessoa() {
    }

    public Pessoa(int idpessoa, String nomepessoa, char sexo) {
    this.idpessoa = idpessoa;
    this.nomepessoa = nomepessoa;
    this.sexo = sexo;
    }
    public Pessoa(int idpessoa, String nomepessoa, String rg, String cpf, String email, String endereco, String complemento, String bairro, String cep, String uf, String cidade, String telres, String telcel, String telcom, char sexo, Date dtnasc, String numero, String tipLogr, Set pacientes, Set funcionarios, Set contatos, Set medicos, Set tippesenhs) {
    this.idpessoa = idpessoa;
    this.nomepessoa = nomepessoa;
    this.rg = rg;
    this.cpf = cpf;
    this.email = email;
    this.endereco = endereco;
    this.complemento = complemento;
    this.bairro = bairro;
    this.cep = cep;
    this.uf = uf;
    this.cidade = cidade;
    this.telres = telres;
    this.telcel = telcel;
    this.telcom = telcom;
    this.sexo = sexo;
    this.dtnasc = dtnasc;
    this.numero = numero;
    this.tipLogr = tipLogr;
    this.pacientes = pacientes;
    this.funcionarios = funcionarios;
    this.contatos = contatos;
    this.medicos = medicos;
    this.tippesenhs = tippesenhs;
    }
    public Pessoa(int idpessoa, String nomepessoa, String rg, String cpf, String email, String endereco, String complemento, String bairro, String cep, String uf, String cidade, String telres, String telcel, String telcom, char sexo, Date dtnasc, String numero, String tipLogr) {
    this.idpessoa = idpessoa;
    this.nomepessoa = nomepessoa;
    this.rg = rg;
    this.cpf = cpf;
    this.email = email;
    this.endereco = endereco;
    this.complemento = complemento;
    this.bairro = bairro;
    this.cep = cep;
    this.uf = uf;
    this.cidade = cidade;
    this.telres = telres;
    this.telcel = telcel;
    this.telcom = telcom;
    this.sexo = sexo;
    this.dtnasc = dtnasc;
    this.numero = numero;
    this.tipLogr = tipLogr;
    }
    public int getIdpessoa() {
    return this.idpessoa;
    }

    public void setIdpessoa(int idpessoa) {
    this.idpessoa = idpessoa;
    }
    public String getNomepessoa() {
    return this.nomepessoa;
    }

    public void setNomepessoa(String nomepessoa) {
    this.nomepessoa = nomepessoa;
    }
    public String getRg() {
    return this.rg;
    }

    public void setRg(String rg) {
    this.rg = rg;
    }
    public String getCpf() {
    return this.cpf;
    }

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

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

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

    public void setComplemento(String complemento) {
    this.complemento = complemento;
    }
    public String getBairro() {
    return this.bairro;
    }

    public void setBairro(String bairro) {
    this.bairro = bairro;
    }
    public String getCep() {
    return this.cep;
    }

    public void setCep(String cep) {
    this.cep = cep;
    }
    public String getUf() {
    return this.uf;
    }

    public void setUf(String uf) {
    this.uf = uf;
    }
    public String getCidade() {
    return this.cidade;
    }

    public void setCidade(String cidade) {
    this.cidade = cidade;
    }
    public String getTelres() {
    return this.telres;
    }

    public void setTelres(String telres) {
    this.telres = telres;
    }
    public String getTelcel() {
    return this.telcel;
    }

    public void setTelcel(String telcel) {
    this.telcel = telcel;
    }
    public String getTelcom() {
    return this.telcom;
    }

    public void setTelcom(String telcom) {
    this.telcom = telcom;
    }
    public char getSexo() {
    return this.sexo;
    }

    public void setSexo(char sexo) {
    this.sexo = sexo;
    }
    public Date getDtnasc() {
    return this.dtnasc;
    }

    public void setDtnasc(Date dtnasc) {
    this.dtnasc = dtnasc;
    }
    public String getNumero() {
    return this.numero;
    }

    public void setNumero(String numero) {
    this.numero = numero;
    }
    public String getTipLogr() {
    return this.tipLogr;
    }

    public void setTipLogr(String tipLogr) {
    this.tipLogr = tipLogr;
    }
    public Set getPacientes() {
    return this.pacientes;
    }

    public void setPacientes(Set pacientes) {
    this.pacientes = pacientes;
    }
    public Set getFuncionarios() {
    return this.funcionarios;
    }

    public void setFuncionarios(Set funcionarios) {
    this.funcionarios = funcionarios;
    }
    public Set getContatos() {
    return this.contatos;
    }

    public void setContatos(Set contatos) {
    this.contatos = contatos;
    }
    public Set getMedicos() {
    return this.medicos;
    }

    public void setMedicos(Set medicos) {
    this.medicos = medicos;
    }
    public Set getTippesenhs() {
    return this.tippesenhs;
    }

    public void setTippesenhs(Set tippesenhs) {
    this.tippesenhs = tippesenhs;
    }

}

[/code]

Essa é a classe paciente que deveria herdar de Pessoa…

[code]package pep.business.to;
// Generated 31/05/2011 10:30:30 by Hibernate Tools 3.2.1.GA

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

/**

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

    private int idpaciente;
    private Pessoa pessoa;
    private String tipopele;
    private String tiposangue;
    private String nompai;
    private String nommae;
    private Double altura;
    private Double peso;
    private Set exames = new HashSet(0);
    private Set contatos = new HashSet(0);
    private Set tratamentos = new HashSet(0);
    private Set historicoclinicos = new HashSet(0);

    public Paciente() {
    }

    public Paciente(int idpaciente, Pessoa pessoa) {
    this.idpaciente = idpaciente;
    this.pessoa = pessoa;
    }
    public Paciente(int idpaciente, Pessoa pessoa, String tipopele, String tiposangue, String nompai, String nommae, Double altura, Double peso, Set exames, Set contatos, Set tratamentos, Set historicoclinicos) {
    this.idpaciente = idpaciente;
    this.pessoa = pessoa;
    this.tipopele = tipopele;
    this.tiposangue = tiposangue;
    this.nompai = nompai;
    this.nommae = nommae;
    this.altura = altura;
    this.peso = peso;
    this.exames = exames;
    this.contatos = contatos;
    this.tratamentos = tratamentos;
    this.historicoclinicos = historicoclinicos;
    }

    public Paciente(int idpaciente, Pessoa pessoa, String tipopele, String tiposangue, String nompai, String nommae, Double altura, Double peso) {
    this.idpaciente = idpaciente;
    this.pessoa = pessoa;
    this.tipopele = tipopele;
    this.tiposangue = tiposangue;
    this.nompai = nompai;
    this.nommae = nommae;
    this.altura = altura;
    this.peso = peso;
    }
    public int getIdpaciente() {
    return this.idpaciente;
    }

    public void setIdpaciente(int idpaciente) {
    this.idpaciente = idpaciente;
    }
    public Pessoa getPessoa() {
    return this.pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
    this.pessoa = pessoa;
    }
    public String getTipopele() {
    return this.tipopele;
    }

    public void setTipopele(String tipopele) {
    this.tipopele = tipopele;
    }
    public String getTiposangue() {
    return this.tiposangue;
    }

    public void setTiposangue(String tiposangue) {
    this.tiposangue = tiposangue;
    }
    public String getNompai() {
    return this.nompai;
    }

    public void setNompai(String nompai) {
    this.nompai = nompai;
    }
    public String getNommae() {
    return this.nommae;
    }

    public void setNommae(String nommae) {
    this.nommae = nommae;
    }
    public Double getAltura() {
    return this.altura;
    }

    public void setAltura(Double altura) {
    this.altura = altura;
    }
    public Double getPeso() {
    return this.peso;
    }

    public void setPeso(Double peso) {
    this.peso = peso;
    }
    public Set getExames() {
    return this.exames;
    }

    public void setExames(Set exames) {
    this.exames = exames;
    }
    public Set getContatos() {
    return this.contatos;
    }

    public void setContatos(Set contatos) {
    this.contatos = contatos;
    }
    public Set getTratamentos() {
    return this.tratamentos;
    }

    public void setTratamentos(Set tratamentos) {
    this.tratamentos = tratamentos;
    }
    public Set getHistoricoclinicos() {
    return this.historicoclinicos;
    }

    public void setHistoricoclinicos(Set historicoclinicos) {
    this.historicoclinicos = historicoclinicos;
    }

}

[/code]

Olá shlmit, bom pelo que pude ver no seu código vc deixou de anotar ao relacionamentos nas suas Entity vou postar um exemplo pra vc.

@Entity
@Table(name = "servicos", catalog = "festas")
public class Servicos implements java.io.Serializable {

	private int id;
	private String descservico;
	private Set<Orcamentocliente> orcamentoclientes = new HashSet<Orcamentocliente>(
			0);
	private Set<Parceiros> parceiroses = new HashSet<Parceiros>(0);

	public Servicos() {
	}

	public Servicos(String descservico,
			Set<Orcamentocliente> orcamentoclientes, Set<Parceiros> parceiroses) {
		this.descservico = descservico;
		this.orcamentoclientes = orcamentoclientes;
		this.parceiroses = parceiroses;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public int getId() {
		return this.id;
	}

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

	@Column(name = "descservico", length = 45)
	public String getDescservico() {
		return this.descservico;
	}

	public void setDescservico(String descservico) {
		this.descservico = descservico;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	@JoinTable(name = "orcamentocliente_has_servicos", catalog = "festas", joinColumns = { @JoinColumn(name = "servicos_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "orcamentocliente_id", nullable = false, updatable = false) })
	public Set<Orcamentocliente> getOrcamentoclientes() {
		return this.orcamentoclientes;
	}

	public void setOrcamentoclientes(Set<Orcamentocliente> orcamentoclientes) {
		this.orcamentoclientes = orcamentoclientes;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "parceiros_has_servicos", catalog = "festas", joinColumns = { @JoinColumn(name = "servicos_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "parceiros_pessoa_id", nullable = false, updatable = false) })
	public Set<Parceiros> getParceiroses() {
		return this.parceiroses;
	}

	public void setParceiroses(Set<Parceiros> parceiroses) {
		this.parceiroses = parceiroses;
	}

}

repare nesta parte do codigo

private Set<Orcamentocliente> orcamentoclientes = new HashSet<Orcamentocliente>(
			0);

e nesta

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "parceiros_has_servicos", catalog = "festas", joinColumns = { @JoinColumn(name = "servicos_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "parceiros_pessoa_id", nullable = false, updatable = false) })
	public Set<Parceiros> getParceiroses() {
		return this.parceiroses;
	}

que é bem parecido com suas entidades.
além disso vc deve observar que para incluir um paciente vc deve ter uma pessoa já existente. se vc estiver incluindo ao mesmo tempo observar o fato de ter que passar um objeto do tipo pessoa para a propriedade de mesmo nome na sua classe paciente. Espero ter ajudado.