Mapeamento com Hibernate Annotations.. ajuda

Boa tarde amigos do JAva… estou com um pequeno problema com o mapeamento de relacionamento 1 para 1… entre as entidades Consulta e paciente, e entre as entidades Consulta e Medico.

ai vai as entidades, espero que possam me ajudar…

// entidade de consulta ============


 package br.com.model;  
   
 import java.io.Serializable;  
 import java.util.Date;  
 import javax.persistence.*;  
   
 @Entity  
 @Table(name="consulta")  
 public class Consulta implements Serializable {  
   
     @Id  
     @GeneratedValue(strategy=GenerationType.SEQUENCE)  
     @Column(name="id_consulta")  
     private Integer id;  
   
     @OneToOne  
     @JoinColumn(name="id_paciente")  
     private Paciente paciente;  
   
     @OneToOne  
     @JoinColumn(name="id_medico")  
     private Medico medico;  
   
     @Column(name="especialidade")  
     private String especialidade;  
   
     @Column(name="data_consulta")  
     @Temporal(javax.persistence.TemporalType.DATE)  
     private Date data;  
   
     // segue os getters e setters abaixo...

// a classe paciente

 package br.com.model;  
   
 import java.io.Serializable;  
 import java.util.Date;  
 import javax.persistence.*;  
 import org.hibernate.annotations.Cascade;  
 import org.hibernate.annotations.CascadeType;  
   
   
   
 @Entity  
 @Table(name="paciente")  
 @SuppressWarnings("serial")  
 public class Paciente implements Serializable {  
   
     @Id  
     @Column(name="id_paciente")  
     @GeneratedValue(strategy=GenerationType.AUTO)  
     private Integer id;  
   
     @Column(name = "nome")  
     private String nome;      
       
     @Column(name = "cpf",unique=true)  
     private Long cpf;  
   
     @Column(name = "rg")  
     private Long rg;  
   
     @Column(name = "data_nasc")  
     @Temporal(TemporalType.DATE)  
     private Date data_nasc;  
   
     @Column(name = "nome_mae")  
     private String nome_mae;  
   
     @Column(name = "nome_pai")  
     private String nome_pai;  
   
     @Column(name = "endereco")  
     private String endereco;  
   
     @Column(name = "numero")  
     private Integer numero;  
   
     @Column(name = "complemento")  
     private String complemento;  
   
     @Column(name = "bairro")  
     private String bairro;  
   
     @Column(name = "nacionalidade")  
     private String nacionalidade;  
   
     @Column(name = "naturalidade")  
     private String naturalidade;  
   
     @Column(name = "uf")  
     private String uf;  
   
     @Column(name = "contato")  
     private Integer contato;  
   
     @Column(name = "email")  
     private String email;  
   
     //mapeamento para relacionamento 1-1 com consulta  
       
     @OneToOne(mappedBy="paciente")  
     @Cascade(CascadeType.ALL)  
     private Consulta consulta;  
   
 // segue os getters e setters dos atributos...

// classe medico


 package br.com.model;  
   
 import java.io.Serializable;  
 import javax.persistence.*;  
 import org.hibernate.annotations.Cascade;  
 import org.hibernate.annotations.CascadeType;  
   
   
   
 @Entity  
 @Table(name = "medico")  
 @SuppressWarnings("serial")  
 public class Medico implements Serializable {  
   
     @Id  
     @Column(name="id_medico")  
     @GeneratedValue(strategy=GenerationType.AUTO)  
     private Integer id;  
       
     @Column(name = "nome")  
     private String nome;  
       
     @Column(name = "crm")  
     private Long crm;  
     @Column(name = "especialidade")  
     private String especialidade;  
     @Column(name = "endereco")  
     private String endereco;  
     @Column(name = "numero")  
     private Integer numero;  
     @Column(name = "complemento")  
     private String complemento;  
     @Column(name = "bairro")  
     private String bairro;  
     @Column(name = "residencial")  
     private Integer residencial;  
     @Column(name = "celular")  
     private Integer celular;  
     @Column(name = "email")  
     private String email;  
   
     //mapeamento do relacionamento 1-1 com consulta ===========  
   
     @OneToOne(mappedBy="medico")  
     @Cascade(CascadeType.ALL)  
     private Consulta consulta;

o problema que esta dando na saida é este…

Exception in thread “AWT-EventQueue-0” java.lang.ExceptionInInitializerError
at br.com.DAO.HibernateUtilAnnotation.(HibernateUtilAnnotation.java:17)
at br.com.DAO.ConvenioDAO.(ConvenioDAO.java:14)
at br.com.view.PacienteView.(PacienteView.java:29)
at br.com.view.PacienteView$10.run(PacienteView.java:828)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
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: org.hibernate.AnnotationException: Unknown mappedBy in: br.com.model.Paciente.consulta, referenced property unknown: br.com.model.Consulta.paciente
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:129)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at br.com.DAO.HibernateUtilAnnotation.(HibernateUtilAnnotation.java:14)

Da uma lida nessas apostilas ai…


http://www.dca.ufrn.br/~raphaela/index.php?corpo=academica.php

@OneToOne(mappedBy="paciente") @Cascade(CascadeType.ALL) private Consulta consulta;

[quote]Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: br.com.model.Paciente.consulta, referenced property unknown: br.com.model.Consulta.paciente
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:129) [/quote]

É neste trecho que vc está tendo problemas. Na exceção está falando que ele está referenciando uma propriedade desconhecida na classe Consulta. o mappedBy procura pela propriedade mapeada nele e, neste caso, ele não está achando a propriedade paciente. Exceptions de mapeamento é bem detalhado no mapeamento.