Como fazer para ter uma pk e fk no mapeamento?

4 respostas
MarcioCasteloBranco
Este mapeamento está ok
<hibernate-mapping package="br.com.uvv.modelo">
  <class name="br.com.uvv.modelo.Professor" table="professor">
     <!-- Identificador da classe -->
     <id name="idProfessor" column="idProfessor" type="long">
          <generator class="increment"/>
      </id>
      
      <!-- Propriedades da classe -->
      <property name="nome" column="nome" type="string"/>
      <property name="senha" column="senha" type="string"/>
      <property name="telefone" column="telefone" type="string"/>
      <property name="email" column="email" type="string"/>
      <property name="matricula" column="matricula" type="string"/>
      <property name="foto" column="foto" type="blob"/>
      <property name="cpf" column="cpf" type="string"/>
      <property name="dataNascimento" column="dataNascimento" type="string"/>
      <property name="sexo" column="sexo" type="character"/>
      <property name="telResidencial" column="telResidencial" type="string"/>
      <property name="telCelular" column="telCelular" type="string"/>
      <property name="contato" column="contato" type="string"/>
      <property name="identidade" column="identidade" type="string"/>
      <property name="status" column="status" type="string"/>
      
      <!-- Relacionamento da classe -->
      <one-to-one name="endereco" class="br.com.uvv.modelo.Endereco" cascade="save-update"/>
          
  </class>
</hibernate-mapping>
Este mapeamento não estou conseguindo fazer
<hibernate-mapping package="br.com.uvv.modelo">
    <class name="br.com.uvv.modelo.Endereco" table="endereco">
      
        <composite-id name="id" class="br.com.uvv.modelo.Endereco">
            <key-property name="idEndereco" column="idEndereco" type="long">
                <generator class="increment"/>
            </key-property>
            <key-property name="professor_idProfessor" column="professor_idProfessor" type="long">
                <generator class="foreign">
                    <param name="property">professor</param>
                </generator>
            </key-property>
        </composite-id>
              
        <property name="logradouro"/>
        <property name="numero"/>
        <property name="bairro"/>
        <property name="cidade"/>
        <property name="uf"/>
        <property name="cep"/>
        <property name="complemento"/>
      
        <one-to-one name="professor" class="br.com.uvv.modelo.Professor" constrained="true"/>
    </class>
</hibernate-mapping>

Pelo meu amadorismo no hibernate não se como fazer esta relação.

4 Respostas

adrianoms

se vc usa o netBeans tem umas opçoes para importar do banco,
no projeto va em adicionar outro aquivo e veja oque tem na categoria Hibernate
aqui fiz uns testes e foram geradas todas as classe de objetos que eu selecionei só que o mapeamento não foi feito em xml e sim por anotações

edit: de uma pesquisada por “hibernate reverse engineering”, praque reinventar a roda.

MarcioCasteloBranco

O irmão obrigado pela dica só que estou querendo aprender por mapeamento para depois fazer por anotações!
Vlw

R

Márcio,isso é sistema legado que vc vai ter que dar manutenção?

MarcioCasteloBranco

Opa rafa é sim tenho que pegar as especificações e implementar com o hibernate!
Tipo no Diagrama de caso esta um ligação 1:1 entre os objetos professor e endereço, normal só que no diagrama ele usou idEndereço e professor_idProfessor, tipo a PK e a Fk eu fiz abstraindo a chave extrangeira sendo a própria PK e funcionou, gostaria de saber se tem como fazer a FK sendo o PK composta por idEndereco em um a relação 1:1.

Criado 29 de maio de 2011
Ultima resposta 29 de mai. de 2011
Respostas 4
Participantes 3