Herança nas consultas (criteria)

0 respostas
ddark.emanu

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!

Criado 26 de maio de 2011
Respostas 0
Participantes 1