Cherubini
Fala ai colored , blz ?
existem 3 tipos de mapeamento
Herança JOINED - Flexível e bom para otimizar espaço de armazenamento e quando existem vários relacionamentos em comum.
Coloquei os mapeamento do banco e da classe nas imagens anexadas
@Entity
@Inheritance(strategy=InheritanceType.JOINED)‏
@DiscriminatorColumn(name="TIPO")‏
public abstract class Pessoa{?}
@Entity
@DiscriminatorValue("FISICA")‏
public class PessoaFisica extends Pessoa{?}
@Entity
@DiscriminatorValue("JURIDICA")‏
public class PessoaJuridica extends Pessoa{?}
Single Table - A melhor opção quando é necessário desempenho em consultas polimórficas e espaço de armazenamento não é problema
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)‏
@DiscriminatorColumn(name="TIPO")‏
public abstract class Pessoa{?}
@Entity
@DiscriminatorValue("FISICA")‏
public class PessoaFisica extends Pessoa{?}
@Entity
@DiscriminatorValue("JURIDICA")‏
public class PessoaJuridica extends Pessoa{?}
Table per Class - Indicado quando não existem muitos relacionamentos em comum e a herança é mais conceitual do ponto de vista de negócios
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)‏
public abstract class Pessoa{?}
@Entity
public class PessoaFisica extends Pessoa{?}
@Entity
public class PessoaJuridica extends Pessoa{?}
Agora a analise de qual se encaixa melhor, é com voce



colored
Cherubini eai. 
então eu dei uma pesquisada pra resolver isso achei uma assim…
e conseguiu fazer o q eu keria…
@Entity
@Table(name = "Cliente")
@Inheritance(strategy = InheritanceType.JOINED)
public class Client {
@Id
@GeneratedValue
private int id;
@Entity
@Table(name = "PessoaFisica")
@PrimaryKeyJoinColumn(name="Cliente_id")
public class PF extends Client{
private String rg;
No meu exemplo o relacionamento…
Eu tenho Cliente Com PF.
Porem Tenho tb NEsse Eskema Cliente - PJ - Colaborador - Usuario
Não sei em qual me encaixo eu tinha utilizado Joined…
mas agora q vc me mostro esse leque de opções fico dificil saber 
Cherubini
entao veio, tem q ver qual te atende mais!
se vc quer deixar tudo em uma tabela ou criar duas ou criar as 3!
vc tem q ver, com sera melhor para o seu sistema!!!
EU costumo usar o Single !
mais ai depende de vc! xD
abraços xD
colored
Vo ir de Joined MEsmo…
Pra q serve esse DiscriminatorColumn???
Cherubini
serve para vc saber qual é a classe (fisica ou jurica) ai nele vc pode falar tambem
qual tipo é esse campo.
exemplo:
@DiscriminatorColumn(name="tipo",discriminatorType=DiscriminatorType.INTEGER)
nome do campo é tipo e ele vai ser um integer
o name pode ser oq vc quiser ! xD
tendeu ?
Cherubini
olha no exemplo que te passei(imagem) la tem um campo tipo, so que nao mencionei o tipo ele criar String(varchar) xD
colored
Mas do jeito q eu fiz… Funciona Tranquilamente tambem neh???
Cherubini
Sim veio, sussinha !! 
qualquer um dois jeitos funciona !
o JOINED é o mais comum
pode usar sem problema ! 
colored
Que bom, vai assim mesmo por enquanto…
Valeo mano… Brigadao 
Cherubini
De nada cara!
as ordens ! ^^