Tenho 3 tabelas: pessoa, pessoafisica, pessoajuridica.
Suas classes
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa{
@Id
@GeneratedValue
private long id;
private String nome;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
@Entity
public class PessoaFisica extends Pessoa {
private BigInteger cpf;
public BigInteger getCpf() {
return cpf;
}
public void setCpf(BigInteger cpf) {
this.cpf = cpf;
}
}
@Entity
public class PessoaJuridica extends Pessoa {
private BigInteger cnpj;
public BigInteger getCnpj() {
return cnpj;
}
public void setCnpj(BigInteger cnpj) {
this.cnpj = cnpj;
}
}
Agora tenho uma classe Testa para buscar todos os clientes
public class Testa {
public static void main(String[] args) {
EntityManager em = new JPAUtil().getEntityManager();
Query q2 = em.createQuery("SELECT p FROM Pessoa p");
List<Object[]> pessoas = q2.getResultList();
for(Object[] pessoa : pessoas){
System.out.println( /* Gostaria de exibir todos os nome das pessoas com seus cpf caso tenha e com seus cnpj caso tenha */ );
}
}
}
A sql gerada pelo hibernate está correta pois retorna todos as pessoas porém no meu console não consigo exibir todas as pessoas com os cpf caso tenha e com seus cnpj caso tenha. 
Desejo uma saida assim:
nome------- |cpf ----------------|cnpj
carlos--------065.065.654.37—null
vaness-------null-----------------55 65464 54 .64 -50