Tenho uma classe Pessoa que é uma classe pai e possui suas classes filhas Cliente , Fornecedor . A classe Pessoa tem uma ligação com o usuário mas quando faço uma critéria com Pessoa ela retorna a consulta com a classe filha(Cliente), eu precisava do retorno da classe PAI pessoa,Alguem tem alguma sugestão ? (Preciso fazer um buscar todas pessoas que não possuem usuário) , segue abaixo o codigo :
Pessoa
@Inheritance(strategy = TABLE_PER_CLASS)
@MappedSuperclass
public class Pessoa implements Serializable {
...
Cliente
@Inheritance(strategy = TABLE_PER_CLASS)
public class Cliente extends PessoaJuridica {
....
Usuario
public class Usuario implements Serializable {
....
@OneToOne
@JoinColumn(name="pessoa", referencedColumnName = "codigo")
public Pessoa getPessoa() {
return pessoa;
}
Consulta
Criteria criteria = ComandoUtil.getSessionExtranet().createCriteria(Pessoa.class,"p");
DetachedCriteria dc = DetachedCriteria.forClass(Usuario.class);
dc.setProjection(Property.forName("pessoa"));
criteria.add(Subqueries.notExists(dc));
Resultado Consulta
select
this_.codigo as codigo245_0_,
this_.CNPJ as CNPJ245_0_,
this_.DDD as DDD245_0_,
this_.EMAIL as EMAIL245_0_,
this_.ENDERECO as ENDERECO245_0_,
this_.NOME as NOME245_0_,
this_.TELEFONE as TELEFONE245_0_,
this_.TIPO_PESSOA as TIPO8_245_0_,
this_.INSCRICAO as INSCRICAO245_0_,
this_.RAZAO_SOCIAL as RAZAO10_245_0_,
this_.DATA_CADASTRO as DATA11_245_0_,
this_.DATA_NASCIMENTO as DATA12_245_0_,
this_.LIMITE_CREDITO as LIMITE13_245_0_
from
CLIENTES this_
where
not exists (
select
this_.pessoa as y0_
from
USUARIO this_
)
Obrigado!