Persistencia de classes - Chave estrangeira é cadastrada nula

1 resposta
S

Opa!

Pessoal, estou encarando um problema que já vem tomando muito tempo.

Tenho que cadastrar no banco de dados uma linha na tabela de Clubes, sendo que cada clube tem um único responsavel. O responsável também é uma classe de persistência e uma tabela do banco(tabela e classe de nome Diretoria ) . Essa classe Diretoria herda de Pessoa, que é a classe mais básica da minha aplicação.

Muito bem..

Aqui estão os códigos dos mapeamentos das minhas classes:

Clube.hbm.xml
<hibernate-mapping>
        <class name="br.com.guepardus.coliseum.entidades.Clube" table="Clube">
                <id name="id" column="CODIGO">
                        <generator class="sequence">
                         <param name="sequence">GEN_PK_CLUBE</param>
                        </generator>
                </id>
                <property name="nomeFantasia" column="NOMEFANTASIA"/>
                <property name="CNPJ" column="CNPJ"/>
                <property name="razaoSocial" column="RAZAOSOCIAL"/>
                <property name="modalidade" column="MODALIDADE"/>
                <property name="endereco" column="ENDERECO"/>
                <property name="telefone" column="TELEFONE"/>
                <property name="localLogo" column="LOCALLOGO"/>
                <one-to-one name="responsavel"
                            class="br.com.guepardus.coliseum.entidades.Diretoria"/>
        </class>
</hibernate-mapping>
Diretoria.hbm.xml
<hibernate-mapping>
        <class name="br.com.guepardus.coliseum.entidades.Diretoria"
               table="Diretoria">
                <id name="id" column="CODIGO">
                        <generator class="native"/>
                </id>
                <property name="cargo" column="CARGO"/>
                <one-to-one name="pessoaMaster"
                            class="br.com.guepardus.coliseum.entidades.Pessoa"/>
        </class>
</hibernate-mapping>
Pessoa.hbm.xml
<hibernate-mapping>
        <class name="br.com.guepardus.coliseum.entidades.Pessoa" table="Pessoa">
                <id name="id" column="CODIGO">
                        <generator class="native"/>
                </id>
                <property name="nome" column="NOME"/>
                <property name="dataNasc" column="DATANASC"/>
                <property name="sexo" column="SEXO"/>
                <property name="cidade" column="CIDADE"/>
                <property name="estadoCivil" column="ESTCIVIL"/>
                <property name="naturalidade" column="NATURALIDADE"/>
                <property name="nacionalidade" column="NACIONALIDADE"/>
                <property name="rg" column="RG"/>
                <property name="orgExpeditor" column="ORGEXPED"/>
                <property name="cpf" column="CPF"/>
                <property name="certificadoReservista" column="CERTRESERV"/>
                <property name="tituloEleitoral" column="TITUELEIT"/>
                <property name="zonaEleitoral" column="ZONAELEIT"/>
                <property name="secaoEleitoral" column="SECAOELEIT"/>
                <property name="ctps" column="CTPS"/>
                <property name="passaporte" column="PASSAPORTE"/>
                <property name="dataValidade" column="DATAVALIDADE"/>
                <property name="banco" column="BANCO"/>
                <property name="agencia" column="AGENCIA"/>
                <property name="contaCorrente" column="CONTACORR"/>
                <property name="registroCBFS" column="REGCBFS"/>
                <property name="registroFederacao" column="REGFEDERA"/>
                
        </class>
</hibernate-mapping>
Estou conseguindo setar os dados normalmente na mão para a classe que eu quero persistir, qe é a classe Clube. Curiosamente, quando eu vou persistir os dados, uma propriedade não é enviada via Hibernate para o banco. É ela a propriedade RESPONSAVEL que é a minha chave estrangeira, que armazenaria o codigo do Diretor responsavel. Eis o sql gerado para a persistencia:
Hibernate: insert into Clube (NOMEFANTASIA, CNPJ, RAZAOSOCIAL, MODALIDADE, ENDERECO, TELEFONE, LOCALLOGO, CODIGO) values (?, ?, ?, ?, ?, ?, ?, ?)

Portanto, eis a pergunta: Por que o hibernate não está enviando o código do meu objeto RESPONSAVEL para a tabela Clube?

1 Resposta

D

Oi,

Tenta mudar

<generator class="sequence">

por <generator class="vm">

ahhh…acrescenta o tipo ao vm, vm.long, por exemplo.

depois, posta aí…

Criado 10 de julho de 2008
Ultima resposta 10 de jul. de 2008
Respostas 1
Participantes 2