Strategy Joined filtrando da tabela errada!

1 resposta
contrabando

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?

1 Resposta

contrabando

Descobri o problema, só pra variar era erro meu…

eu estava sobrescrevendo o método getCodigo() e usando a annotation @PrimaryKeyJoinColumn sendo que a classe filha tinha a pk com o mesmo nome…

valew pela “Ajuda”…

Criado 29 de julho de 2009
Ultima resposta 29 de jul. de 2009
Respostas 1
Participantes 1