Herança hibernate[Resolvido]

4 respostas
P

Galera siguinte tenho uma classe Pessoa que contem nome, cpf, data de nascimento e outras 2 que possue o extendes

public class Funcionario extends Pessoa
public class Cliente extends Pessoa

como eu faço o mapeamento no hibernate sem criar outra tabela para Pessoa, somente uma para funcionario e cliente?

com hbm.

4 Respostas

J

De uma olhada na anotação @MappedSuperclass, deve servir ao que tu procura.

P

É que eu estou usando XML, teria alguma tag que representasse isso?

Priuli

Eu utilizo com estas anotações:

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="cd_pessoa", discriminatorType=DiscriminatorType.INTEGER)
@DiscriminatorValue(value="0")
class Pessoa  implements Serializable {
 //...
}


@Entity
@DiscriminatorValue(value="1")
@Table(name="FUNCIONARIO")
class Funcionario extends Pessoa implements Serializable  {
//...
}
P

Galera consigui, achei um exemplo no livro hibernate em ação

O mapeamento :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

  <class
    name="Classes.Pessoa"
    table="Pessoa">
        
        <id
            name="id"
            column="id">
            <generator class="increment"/>
        </id>

        <property name="nome" column="nome"/>
        <property name="datanasc" column="datanasc" type="date"/>
        <property name="endereco" column="endereco"/>
        <property name="cpf" column="CPF"/>
        <joined-subclass
            name="Classes.Cliente"
            table="Cliente">
            <key column="id"/>
            <property name="telefone" column="telefone"/>
        </joined-subclass>

        <joined-subclass
            name="Classes.Funcionario"
            table="Funcionario">
            <key column="id"/>
            <many-to-one cascade="save-update" class="Classes.Cargo" column="cargo" lazy="false" name="cargo"/>
            <property name="salario" column="salario" type="double"/>
        </joined-subclass>

    </class>

</hibernate-mapping>
Criado 29 de novembro de 2010
Ultima resposta 29 de nov. de 2010
Respostas 4
Participantes 3