Chave composta Hibernate

2 respostas
A

Tenho uma dúvida sobre a chave composta, estou desenvolvendo um sistema em que um usuario possui uma pessoa, mas a chave de pessoa é composta por 2 campos codigo1 e codigo2, como que ficaria o mapeamento no hibernate?
Porque hoje quando faço uma busca por id de usuario e tento pegar pessoa (getPessoa()) ele nao traz o relacionamento.
Usuario possui as duas colunas codigoPes_id1 e codigoPes_id2

Eu tenho as duas classes mapeadas desta forma:

USUARIO

<many-to-one name="pessoa" class="Pessoa" insert="false" update="false">
			<column name="codigoPes_ID1"></column>
			<column name="codigoPes_ID2"></column>
		</many-to-one>

PESSOA

<composite-id name="id" class="PessoaPK">   
             <key-property name="codigo1" column="CODIGO1" type="java.lang.Integer"></key-property>
             <key-property name="codigo2" column="CODIGO2" type="java.lang.Integer"></key-property>
         </composite-id>

2 Respostas

xandevieira

Se não me engano o nome deve ser o mesmo da classe pessoa

<many-to-one name="pessoa" class="Pessoa" insert="false" update="false">  
         <column name="codigoPes_ID1"></column>  
         <column name="codigoPes_ID2"></column>  
</many-to-one> 

ficaria assim:

<many-to-one name="pessoa" class="Pessoa" insert="false" update="false">  
         <column name="codigo1"></column>  
         <column name="codigo2"></column>  
</many-to-one>
A

Na verdade o erro era outro, o mapeamento funcionava, mas quando eu pegava pessoa de um usuario dava erro de Lazy, o que não acontece com minhas paginas normais, so entao que percebi que ele nao estava usando o filtro
OpenSessionInViewFilter, entao foi so eu adicionar o filtro no web.xml como segue abaixo e tudo funcionou novamente :slight_smile:

HibernateFilter
/dwr/*

Criado 11 de dezembro de 2007
Ultima resposta 12 de dez. de 2007
Respostas 2
Participantes 2