Problemas com inserção relacionamento Bi-direcional

0 respostas
Cabral

Pessoal meu problema é o seguinte:

Eu tenho um relacionamento NxN e foi implementado utilizando o composite-id.

as classes são:

Contrato, ContratoInterconexao (extend Contrato) ContratoRota, ContratoRotaPK e Rota.

eu tenho o Hbm de Contrato que define o ContratoInterconexao como filho na seguinte linha:

<joined-subclass name="br.com.xxx.ContratoInterconexao"  extends="br.com.xxx.Contrato" table="TB_CONTR_INTER">
	        <key column="ID_CONTR"/>
		
	        ...
	        ...        
	
    </joined-subclass>
e dentro ele defino a coleção de ContratoRotas
<set name="contratoRotas" table="TB_CONTRATO_ROTA" cascade="all" inverse="false" lazy="false" >
  		<key column="ID_CONTR"/>		
		<one-to-many class="br.com.xxx.ContratoRota" />
	  </set>
No meu hbm de ContratoRota ele usa a classe ContratoRotaPK por causa da chave composta:
<composite-id name="ContratoRotaPK"	class="br.com.xxx.ContratoRotaPK">
	  <key-property name="idContrato" type="java.lang.Long" column="ID_CONTR"/>
	  <key-property name="idRota" type="java.lang.Long" column="ID_ROTA"/>			
	</composite-id>
E finalmente na Rota eu defino também uma coleção de ContratoRotas:
<set name="contratos" table="TB_CONTR" cascade="none"  lazy="true" inverse="true">
            <key column="ID_ROTA" />
            <one-to-many class="br.com.xxx.ContratoRota"/>
        </set>
meu problema é o seguinte: Minha tela de cadastro eu insiro os dados especificos do Contrato e seleciono as rotas ja existentes que vão pertencer a ele. quando eu tento salvar no banco o hibernate me da a seguinte mensagem: (util.JDBCExceptionReporter 71 ) SQL Error: 1400, SQLState: 23000 (util.JDBCExceptionReporter 72 ) ORA-01400: cannot insert NULL into ("TB_CONTRATO_ROTA"."ID_CONTR") eu debuguei e vi que o objeto ContratoRotaPK esta com esse id do contrato nulo realmente, só que na tabela de contratos ele faz o insert normalmente e quando vai inserir na tabela que relaciona ele me da o erro. Alguém consegue me dar uma luz do por que isso esta acontecendo? Obrigado Ricardo Cabral
Criado 11 de janeiro de 2007
Respostas 0
Participantes 1