Problema com id em Hibernate Annotations @OneToOne

4 respostas
D

Olá galera, estou com a seguinte dificuldade:

Tenho uma associação @OneToOne entre duas @Entity, em que gostaria de usar o id de mesma sequencia para as duas classes. Usando Hibernate Annotations.

public class Pessoa{
  private int id;
  private Endereco endereco;
}

public class Endereco{
  private int id;
  private Pessoa pessoa;
}

Quero fazer que no momento de persistir o objeto em DB, ele pegue o id da classe Pessoa e set em Endereco.

no mapeamento por xml uso da seguinte forma:

<class name="Endereco">
	<id name="id"
		column="Pessoa_id">
		<generator class="foreign">
		<param name="property">pessoa</param>		</generator>			
	</id>

	<one-to-one 
		name="pessoa" 
		class="Pessoa"
		constrained="true"/>
</class>

Estou agora pensando em meu PessoaBO (responsável por instanciar um novo objeto, acessar o próximo valor da sequencia e atribuir para ambos objetos.)
Antes pergunto a vocês que já possuem uma experiencia no assunto, qual o melhor método de resolver essa situação??

Abraço e obrigado

4 Respostas

M

E ai diogo roedel, beleza ?
Cara eu estava querendo fazer a mesma coisa. Caso vc consiga a resposta, por favor teria como encaminhar para mim.
[email removido]

Abraços

M

Opa,

Bom, você não precisa fazer isto, deixe o banco de dados fazer para você:

Só uma coisa, para este problema one-to-one não é a melhor solução, concorda… um mesmo Endereço pode ter várias pessoas, já parou para pensar? Se não fizer isto não adianta muito quebrar em duas tabelas.

:okok:

D

Olá Marcos, concordo com você em relação ao @OneToOne.
Porém essa situação é apenas uma amostra, tenho em alguns outros casos a mesma situação.

Vou dar uma olhada nessa solução, mas acho que já tentei e não fui muito feliz.

M

Se vc estiver utilizando hibernate annotations, basta utilizar as notações nos metodos, e no setId da classe pessoa vc chama o setId do endereço,com isso vc vai ter a mesma chave primaria para pessoa e endereço.

Criado 18 de agosto de 2007
Ultima resposta 20 de ago. de 2007
Respostas 4
Participantes 4