Boa tarde, a todos.
Estou com o seguinte problema tenho um relacionamento Indicador(1)->Valores(N).
Preciso filtrar um campo da tabela filho, mas todas a vez que executo a query, ela retorna todos os valores da tabela filho sem aplicar o filtro.
Alguém sabe me dizer o que estou fazendo de errado?
Estou usando TopLink
Os códigos estão assim:
//************************************************************************\\
public class KpiIndicadorPU implements Serializable {
...
@OneToMany( mappedBy = "indicador",cascade = CascadeType.ALL)
private Collection<KpiValorPU> valores;
...
}
//************************************************************************\\
public class KpiValorPU implements Serializable {
...
@ManyToOne
@JoinColumn(name = "ind_int_id", referencedColumnName = "ind_int_id")
private KpiIndicadorPU indicador;
...
}
//*******************Classe para teste*****************************************************\\
public class JpaTeste extends KpiDataResponse {
EntityManager em = getEmf().createEntityManager();
EntityManager em = getEmf().createEntityManager();
Query q = em.createQuery("SELECT c FROM KpiIndicadorPU c" +
" LEFT JOIN c.valores val where c.indIntId = 1 and val.indIntId = 1");
KpiIndicadorPU pu = (KpiIndicadorPU) q.getSingleResult();
Collection<KpiValorPU> valores = pu.getValores();
if (valores.size() == 1) {
System.out.println("VALOR CORRETO");
} else {
System.out.println("VALOR ERRADO, DEVERIA TER RETORNADO UM ÚNICO VALOR NA COLLECTION");
}
}