JPA/Hibernate duvida qual anotação usar para classes com herança

Olá,

uma duvia como fazer as anotações para as classes abaixo
onde no banco de dados tenho três tabelas:

  • Pessoa
  • Fisica
  • Juridica

e o campo que sei que vai jogar na classe fisica é o campo tipo_pessoa
que indica se é fisica ou juridica ???

Não sei como fazer as anotações e como o JPA/Hibernate será que classe
vai alimentar fisica ou juridica para a pessoa seleciona ???

se alguém puder me ajudar …

abs



class Pessoa{

   private int id;
   private String nome;
   private String tipo_pessoa;  ///onde pode ser F - Fisica   ou J- Juridica

}



class Fisica{

  private long id;
  private long nrCPF
  private long dataInscrição;
}

class Juridica{

  private long id;
  private long nrCNPJ;
  private long dataInscrição;
}


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.SequenceGenerator;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Table(name=“Pessoa”)
@SequenceGenerator(name=“nome-seq”, sequenceName=“nome-seq”) – se usar sequence
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa {

@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="nome-seq") -- se usar sequence
@Column(name="id")
private Long id;

@Column(name="nome", length=60)
private String nome;

@Column(name="dataInscricao")
private Date dataInscricao;

    ....

@Entity
@Table(name=“Fisica”)
@PrimaryKeyJoinColumn(name=“id”)
public class Fisica extends Pessoa {

@Column(name="nrCPF")
private String nrCPF;

    ...

@Entity
@Table(name=“Juridica”)
@PrimaryKeyJoinColumn(name=“id”)
public class Juridica extends Pessoa {

@Column(name="nrCNPJ")
private String nrCNPJ;

    ...

A coluna dataInscricao deve ficar na tabela Pessoa.

Espero que tenha ajudado.

Boa Tarde:

Estou iniciando meu aprendizado em JPA e começaram as duvidas. Segui a forma de gerar o @Generatedvalue etc. etc. … ai na minha classe nao estou setando valores para o campo ID. Quando vou persistir o objeto no banco da erro que a chave não pode ser nula. O que tenho q fazer para resolver esse problema?

Grato

um exemplo como estou usando por aki estamos gerando pro banco mysql onde o campo id já é incrementado no mysql …

não sei se vai te ajudar


@Entity
@Table(name="OPERATION")
public class UserOperation{

	@Id
	@GeneratedValue
	@Column(name = "OP_ID")	


-- tabela gerada

CREATE TABLE  operation(
  `OP_ID` bigint(20) NOT NULL auto_increment
  PRIMARY KEY  (`OP_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1;

obrigado guedesrj