Mapeamento 1:1 no hibernate

7 respostas
rodrigousp

Como eu faço um mapeamento 1:1 no hibernate (de preferência… com xdoclet) ?
Alguém tem algum exemplo ?
Tipo… eu gostaria que tivesse uma coluna que aponta-se para uma outra tabela. Quando eu executasse o comando get o super hibernate trataria de fazer o join.
O uso do do comando one-to-one parece que não basta.

[]´s

7 Respostas

ricardolecheta

tentou assim?

<one-to-one name="integrante" class="org.scaf.model.IntegranteFamiliaVO" constrained="true" />

rodrigousp

Problema que isto não aceita relações 1: 0…1
Quer dizer, é necessário existir a outra entidade, mas eu não quero isto.

lcmetzger

“rodrigousp”:
Como eu faço um mapeamento 1:1 no hibernate (de preferência… com xdoclet) ?
Alguém tem algum exemplo ?
Tipo… eu gostaria que tivesse uma coluna que aponta-se para uma outra tabela. Quando eu executasse o comando get o super hibernate trataria de fazer o join.
O uso do do comando one-to-one parece que não basta.

[]´s

Hummm,até onde sei, o mapeamento one-to-one do Hibernate requer que ambas as tabelas tenham como chave primária o mesmo valor, isto é, o relacionamento entre as tabelas se dá pela chave primária.

É esta sua dúvida?

T+

:?

rodrigousp

Ó só …
Eu tentei fazer isto, mas não rolou não …
Daí eu usei a outra solução que está no manual e deu certo (apesar de ser meio cretina).

<many-to-one name="person" class="Person" column="PERSON_ID" unique="true"/>

Solução Cretina, mas funciona…

Paulo_Silveira

rodrigo, tambem tenho esse problema
e com xdoclet nem funciona, ele gera um xml que nao pega o one-to-one
outro problema que tenho eh com o many to many desfazer as coisas anteriores, vc tb tem?

rodrigousp

(Comando da madrugada…)
Paulo, aparentemente tá funcionando meu many to many…
Talvez eu não tenha feito testes suficientes.
O código é o seguinte:

/**
	 * @hibernate.set table="link_audit_standard" cascade="none" inverse="false" lazy="false"
	 * @hibernate.collection-key column="Audit_ID"
	 * @hibernate.collection-many-to-many class="br.com.imagetec.pag.pojos.Standard" column="Standard_Id"
	 * @return Set
	*/
	public Set getStandards() {
		return standards;
	}

Vou continuar testando … se eu descobrir alguma coisa eu posto aqui no forum.

rodrigousp

Estou completando as informações anteriores…
Por que eu devo usar a solução many-to-one para resolver o problema one-to-one?
Porque one-to-one é a associação de primary keys. No final, o gerador de primary key vai fazer as duas primary keys iguais.

Mas com many-to-one associação a relação é feita por foreign keys.

Criado 18 de fevereiro de 2004
Ultima resposta 10 de mar. de 2004
Respostas 7
Participantes 4