Relacionamento one-to-one no Hibernate

Estou aprendendo a usar o Hibernate e jpa me deparo com o seguinte problema:
Tenho duas tabelas uma cidadao e endereco com o relacionamento um - para - um . Gostaria de que quando eu criar o cidadao ele já ter o endereco e inserir no banco automaticamente. Achei algumas que diziam para usar cascade = “save-update”. Estou usando, mas esta parecendo o seguinte erro : “attempted to assign id from null one-to-one property: cidadao”. Alguem poderia me dizer o proque do erro e como corrigir.

O mapeamento do cidadao é:


 <class name="Cidadao"  table="cidadao">
 
 <!-- Identificador da classe -->
   
 <id name="codCidadao" column="cod_cidadao" >
 <generator class="native">
 <param name="sequence">cidadao_cod_cidadao_seq</param>
 </generator>
 </id>
 <!-- Propriedades da classe -->
 
 <property name="corretude" column="corretude_cidadao" not-null="true"/>
 <property name="dataCadastro" column="data_cadastro" not-null="true"/>
 <property name="nomeCidadao" column="nome_cidadao"/>
 
 <!-- Relacionamento da Classe -->
         
         <many-to-one name="usuario" class="Usuario" fetch="select">
             <column name="cod_usuario" not-null="true" />
         </many-to-one>
         
         <many-to-one name="cidadao" class="Cidadao" not-null="false" fetch="select">
             <column name="cod_cidadao_pai"/>
         </many-to-one>        
         
        <one-to-one name="endereco" class="endereco" cascade="save-update"  /> 
 

endereco:


 <class name="Endereco" table="endereco">
 
 <!-- Identificador da classe -->
  <id name="cod_cidadao" column="cod_cidadao"> 
                         <generator class="foreign">
                         <param name="property">cidadao</param>
                    </generator>
             </id>           
 
 <!-- Propriedades da classe -->
 
 <property name="endereco"/>
 <property name="bairro"/>
 <property name="cidade"/>
 <property name="cep"/>
 
 <!-- Relacionamento da Classe -->
 
 <one-to-one name="cidadao" class="Cidadao" constrained="true" /> 

no Main eu tenho :

                     Endereco endereco = new Endereco();
 endereco.setBairro("taguatinga");
 
 Cidadao cidadao = new Cidadao();
 cidadao.setNomeCidadao("hugo");
 cidadao.setCorretude(true);
 cidadao.setDataCadastro(new Date(11/11/2006));
 cidadao.setEndereco(endereco);
 cidadao.setUsuario(usuario);
 
 transaction = session.beginTransaction();
 session.save(cidadao);
 transaction.commit();
 session.close();

só um detalhe estou usando postgre !!!

Desde já agradeço a ajuda!

NÃO REPITA OS TÓPICOS POR FAVOR !!!