Hib Annotations relacionamento 1:1

5 respostas
SadNess

galera, to com dúvida aqui pra fazer um mapeamento OneToOne
tenho as seguintes classes:

@Entity
public class Pessoa {
	
	@Id
	private long identidade;
	private String nome;
	@OneToOne
	private Endereco endereco;
	
	
}
@Entity
public class Endereco {
	
	private String bairro;
	private String rua;
	@OneToOne
	@PrimaryKeyJoinColumn
	private Pessoa pessoa;
	
}

mas quando eu tento criar as tabelas usando o código abaixo:

Configuration cfg = new AnnotationConfiguration().configure(new File("/web/doc/intranet/WEB-INF/classes/hibernate.intranet.cfg.xml"));
new SchemaExport(cfg).create(true, true);

eu recebo o seguinte erro:

org.hibernate.AnnotationException: No identifier specified for entity: teste.hib.Endereco

Eu quero que a PK de endereço seja o id de pessoa, ou seja, a FK é a própria PK
como eu faço isso? o que estou fazendo de errado

5 Respostas

SadNess

ninguém??
me parece uma dúvida simples mas que eu to apanhando =[

ddduran

Todo Entity tem que ter um ID seu endereço não tem um ID, ele é mesmo uma outra tabela do banco?

ou ele é um Embedded?

ve se o que você quer fazer não é isso
http://www.guj.com.br/posts/list/71059.java#373181

M

Opa, beleza. Acho que está invertido a coluna que é uma chave estrangeira, não é a pessoa que vai possuir a coluna da cidade?

SadNess

então
o que eu queria é que o id de Endereço fosse o mesmo id de Pessoa
acho que utilizando Embedded resolve meu problema, apesar de eu não considerar a solução ideal

ddduran

então, você leu a thread que eu passei o link? o cara quer fazer a mesma coisa que você só que Cliente - Endereço

Criado 24 de outubro de 2007
Ultima resposta 25 de out. de 2007
Respostas 5
Participantes 3