Estou tentando filtrar usando JPA (hql e criteria) de umas tabelas (classes) que usam a strategy joined, porem quando mando filtrar pelo código de uma tabela o jpa filtra por outra tabela o que me gera inconsistência na consulta…
consulta feita:
Criteria criteria = ComandoUtil.getSession().createCriteria(Pessoa.class);
criteria.add(Restrictions.in("codigo", codigosClientes));//codigosClientes é um List com os códigos a serem buscados
List<Pessoa> listPessoas = (List<Pessoa>) criteria.list();
sql gerada:
select
pessoa0_.codigo as codigo1364_,
//demais colunas,
case
when pessoa0_1_.codigo is not null then 1
when pessoa0_2_.codigo is not null then 2
when pessoa0_3_.codigo is not null then 3
when pessoa0_4_.codigo is not null then 4
when pessoa0_.codigo is not null then 0
end as clazz_
from
PESSOAS pessoa0_
left outer join
CLIENTES pessoa0_1_
on pessoa0_.codigo=pessoa0_1_.codigo
left outer join
FUNCIONARIOS pessoa0_2_
on pessoa0_.codigo=pessoa0_2_.codigo
//tem mais join aqui
where
pessoa0_1_.codigo in (
?
)
reparem que ela filtrou de pessoa0_1_ que é da tabela clientes e NÃO de pessoa0_ (tabela pessoas)
meu mapeamento:
Pessoa.class
@Entity
@Table(name="PESSOAS")
@Inheritance(strategy=JOINED)
public class Pessoa implements Serializable {
//propriedades, getters and setters
}
PessoaJuridica.class
@MappedSuperclass
public abstract class PessoaJuridica extends Pessoa implements Serializable {
//propriedades, getters and setters
}
Cliente.class
@Entity
@Table(name = "CLIENTES")
@Inheritance(strategy = JOINED)
@PrimaryKeyJoinColumn(name = "codigo", referencedColumnName = "codigo")
public class Cliente extends PessoaJuridica {
//propriedades, getters and setters
}
entenderam o meu problema?
podem me ajudar?