Relacionamento @OneToOne no hibernate

2 respostas
R

não to conseguindo mapear o relacionamento one to one, no hibernate ja tentei de varias formas e toda vez fica dando erro.
aqui estão as classes.
eu to usando java+flex+hibernate+springframework

package pep.javaFlex.model.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;
@Entity

public class Paciente extends Pessoa {

@Id @GeneratedValue(strategy = GenerationType.AUTO)

private long idPaciente;	

private String trazidoPor;

private String acompanhante;

private String procedencia;

private String meiodoDeTransporte;

private String dispositivoMedico;
//public Prontuario myProntuario;

public long getIdPaciente() {
	return idPaciente;
}

public void setIdPaciente(long idPaciente) {
	this.idPaciente = idPaciente;
}

public String getTrazidoPor() {
	return trazidoPor;
}

public void setTrazidoPor(String trazidoPor) {
	this.trazidoPor = trazidoPor;
}

public String getAcompanhante() {
	return acompanhante;
}

public void setAcompanhante(String acompanhante) {
	this.acompanhante = acompanhante;
}

public String getProcedencia() {
	return procedencia;
}

public void setProcedencia(String procedencia) {
	this.procedencia = procedencia;
}

public String getMeidoDeTransporte() {
	return meiodoDeTransporte;
}

public void setMeidoDeTransporte(String meidoDeTransporte) {
	this.meiodoDeTransporte = meidoDeTransporte;
}

public String getDispositivoMedico() {
	return dispositivoMedico;
}

public void setDispositivoMedico(String dispositivoMedico) {
	this.dispositivoMedico = dispositivoMedico;
}
//	public Prontuario getMyProntuario() {

//		return myProntuario;

//	}

//

//	public void setMyProntuario(Prontuario myProntuario) {

//		this.myProntuario = myProntuario;

//	}

}

package pep.javaFlex.model.entity;

import javax.persistence.Entity;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.OneToOne;

import javax.persistence.CascadeType;

import pep.javaFlex.model.entity.Endereco;

public class Pessoa{

private String nomePessoa;
private long idadePessoa;
private int cpfPessoa;
private int rgPessoa;
private String sexoPessoa;
private String paiPessoa;
private String maePessoa;
private String dataNascimentoPessoa;
private String telefResidencial;
private String telefCelular;
private String estadoCivil;

//@OneToOne(cascade = CascadeType.ALL)
@OneToOne(mappedBy="Pessoa")  
private Endereco endereco;
  
public String getEstadoCivil() {
	return estadoCivil;
}
public void setEstadoCivil(String estadoCivil) {
	this.estadoCivil = estadoCivil;
}
public Endereco getEndereco() {
	return endereco;
}
public void setEndereco(Endereco endereco) {
	this.endereco = endereco;
}
public String getNomePessoa() {
	return nomePessoa;
}
public void setNomePessoa(String nomePessoa) {
	this.nomePessoa = nomePessoa;
}
public long getIdadePessoa() {
	return idadePessoa;
}
public void setIdadePessoa(long idadePessoa) {
	this.idadePessoa = idadePessoa;
}
public long getCpfPessoa() {
	return cpfPessoa;
}
public void setCpfPessoa(int cpfPessoa) {
	this.cpfPessoa = cpfPessoa;
}
public long getRgPessoa() {
	return rgPessoa;
}
public void setRgPessoa(int rgPessoa) {
	this.rgPessoa = rgPessoa;
}
public String getSexoPessoa() {
	return sexoPessoa;
}
public void setSexoPessoa(String sexoPessoa) {
	this.sexoPessoa = sexoPessoa;
}
public String getPaiPessoa() {
	return paiPessoa;
}
public void setPaiPessoa(String paiPessoa) {
	this.paiPessoa = paiPessoa;
}
public String getMaePessoa() {
	return maePessoa;
}
public void setMaePessoa(String maePessoa) {
	this.maePessoa = maePessoa;
}
public String getDataNascimentoPessoa() {
	return dataNascimentoPessoa;
}
public void setDataNascimentoPessoa(String dataNascimentoPessoa) {
	this.dataNascimentoPessoa = dataNascimentoPessoa;
}
public String getTelefResidencial() {
	return telefResidencial;
}
public void setTelefResidencial(String telefResidencial) {
	this.telefResidencial = telefResidencial;
}
public String getTelefCelular() {
	return telefCelular;
}
public void setTelefCelular(String telefCelular) {
	this.telefCelular = telefCelular;
}

}

package pep.javaFlex.model.entity;

import javax.persistence.Entity;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.JoinColumn;

import javax.persistence.OneToOne;

import pep.javaFlex.model.entity.Pessoa;

@Entity
public class Endereco {

@Id	
private long idEndereco;
private String rua;
private int numero;
private String cidade;
private String bairro;
private int cep;
private String uf;
private String pontoDeReferencia;
//	@OneToOne(mappedBy = “endereco”)

@OneToOne

@JoinColumn(name=idPessoa)

private Pessoa pessoa;
public Pessoa getPessoa() {
	return pessoa;
}

public void setPessoa(Pessoa pessoa) {
	this.pessoa = pessoa;
}

public long getIdEndereco() {
	return idEndereco;
}

public void setIdEndereco(long idEndereco) {
	this.idEndereco = idEndereco;
}

public String getRua() {
	return rua;
}

public void setRua(String rua) {
	this.rua = rua;
}

public int getNumero() {
	return numero;
}

public void setNumero(int numero) {
	this.numero = numero;
}

public String getCidade() {
	return cidade;
}

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

public String getBairro() {
	return bairro;
}

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

public int getCep() {
	return cep;
}

public void setCep(int cep) {
	this.cep = cep;
}

public String getUf() {
	return uf;
}

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

public String getPontoDeReferencia() {
	return pontoDeReferencia;
}

public void setPontoDeReferencia(String pontoDeReferencia) {
	this.pontoDeReferencia = pontoDeReferencia;
}

}

o erro:

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on pep.javaFlex.model.entity.Endereco.pessoa references an unknown entity: pep.javaFlex.model.entity.Pessoa

at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)

at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456)

at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438)

at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)

at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)

at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:799)

at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:733)

at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)

at pep.javaFlex.controller.AnnotationOptimizedSessionFactoryBean.afterPropertiesSet(AnnotationOptimizedSessionFactoryBean.java:44)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1288)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1257)

Agradeço a quem puder mim ajudar.

2 Respostas

Flavio_Almeida

Sua classe Pessoa está sem @Entity e sem @Id.

Abraço

R

cara porque assim se eu colocar @Id na classe pessoa ele vai dar problema de override porque
tem na classe paciente também.

Porque a idéia é que paciente herde os atributos de pessoa, porque paciente é uma pessoa e que toda
pessoa tenha um endereço mais como fazer a ligação de pessoa com endereço 1:1 ?

Criado 7 de outubro de 2010
Ultima resposta 7 de out. de 2010
Respostas 2
Participantes 2