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:
[code]
<joined-subclass name="br.com.xxx.ContratoInterconexao" extends="br.com.xxx.Contrato" table="TB_CONTR_INTER">
<key column="ID_CONTR"/>
...
...
</joined-subclass>
[/code]
e dentro ele defino a coleção de ContratoRotas
[code]
<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>
[/code]
No meu hbm de ContratoRota ele usa a classe ContratoRotaPK por causa da chave composta:
[code]
<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>
[/code]
E finalmente na Rota eu defino também uma coleção de ContratoRotas:
[code]
<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>
[/code]
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