Como instanciar Pessoas Físicas, deixar de lado Pessoas Jurídicas, ambas herdam de Pessa

Saudações Pessoal

Peço uma ajuda para saber como instanciar as subclasses PessoaFisica, PessoaJuridica.

public class Cliente {
   privante Pessoa pessoa;

  public Pessoa getPessoa() {
   return pessoa;
}
public classe PessoaFisica extends Pessoa {
}
public class PessoaJuridica extends Pessoa {
}

como instanciar um objeto PessoaFisica do banco de dados com um get, assim?

Cliente cliente = new Cliente();
PessoaFisica pessoa =  cliente.getPessoa();

Uso JPA+Hibernate
preciso saber como trazer isso do banco de dados de modo que ele traga somente pessoas físicas, não instancie pessoas jurídicas.

No banco há uma tabela pessoa que armazena pessoas físicas e jurídicas juntas

cara se não me engano você tem que usar um método chamado instanceof();
Mas seu assunto está mal especificado não é isso que você quer.

Você já cadastrou as pessoas, correto?

Provavelmente no seu banco de dados deve ter uma tabela que relaciona Pessoa e Tipo de Pessoa. VERIFIQUE ISSO, se não a modelagem do seu sistema pode estar completamente errada.

Ai basta você utilizar o comando select correto.

A diferença é que não conheço hibernate. mas por exemplo:

SELECT a.nmPessoa FROM Pessoa a
WHERE a.idPessoa IN (SELECT * FROM TipoPessoa WHERE nmTipoPessoa LIKE ‘Pessoa Fisica’);

fiz correndo o comando select, mas é mais ou menos por ai.

Att

é isso ai o que o nosso colega disse, resumindo:

Se você quer instanciar objetos diferentes vindos do banco, sendo que os dados vem da mesma tabela, então você precisa ter algum campo ou qualquer indicador que separe os dois tipos. Se não tiver, então é preciso refazer a estrutura, criando 2 tabelas ou adicionando um campo com o tipo de pessoa.

Dica: alguns bancos, como o PostgreSQL, implementa a herança, não sei explicar se na arquitetura do banco isso trás alguma vantagem à usar 2 ou mais tabelas separadas, mas seria bom dar uma olhada se for do seu interesse.

O instanceof só funciona se o objeto já estiver instanciado, ex.:

if( obj instanceof PessoaFisica ) pessoaFisica = (PessoaFisica) obj; else pessoaJuridica = (PessoaJuridica) obj;

Edit: Não vi que se tratava de Hibernate…hehe
Acredito que seja a mesma coisa, porque ele só grava no banco sem criar nenhum campo adicional.
Atrazei meu TCC tentando aprender hibernate e traumatizei…rs

o problema está em saber qual Pessoa Física ou Pessoa Jurídica é Cliente

em jpa tem como instanciar um Query

Assim

Query query = manager.createQuery("SELECT c FROM Cliente c");
List<Cliente> = query.getResultSet();

o problema é justamente saber quais PessoasFísicas são clientes, porque a tabela Cliente possui a chave estrangeira com o id de pessoa.

ué…não entendi…rs

Então você quer saber se um Cliente é PessoaFisica ou PessoaJuridica (da qual estão na tabela Pessoa)…certo?

Pra saber se uma Pessoa é um Cliente é fácil:

"SELECT * FROM Pessoa LEFT JOIN Cliente ON Pessoa.id = Cliente.id"

Mas saber qual Pessoa (ou Cliente) é um PessoaFisica ou PessoaJuridica, é tudo aqui que falamos anteriormente.
Pra ajudar: No banco, o que diferencia uma PessoaFisica de PessoaJuridica? Angum campo, a formatação do CNPJ e do CPF?

o que eu preciso na verdade é instanciar em uma JTable

somente os clientes pessoa física

somente os clientes pessoa jurídica

usando JPA com hibernate

vou dar uma olhada na linguagem HQL do hibernate

mas de qualquer forma valeu amigos!

é isso ai amigo, em algum lugar você guarda as informações, mas fica dificil orientarmos sem saber.

mas concerteza você vendo o HQL resolve seu problema.

não conseguir entender tb claramente o que vc precisa amigo.

sei lá mais se vem tudo da mesma tabela nao seria interesante criar um atributo que indentificasse.

ou mesmo fazer um comparação pq provalvelmente vc deve ter os campos cpf e cnpj onde vc sempre vai setar como null um deles !