Olá pessoal,
estou com um probleminha, na parte de Restrictions da minha query
eu preciso verificar campos de outros tabelas do meu relacionamento.
exemplo:
Criteria criteria = getCurrentSession().createCriteria(ParametroTransferenciaFaseFadLocal.class);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.eq("funcaoTransferenciaFaseFadLocal.funcaoTransferenciaFadLocal.skin",codRevst));
criteria.add(Restrictions.in("funcaoTransferenciaFaseFadLocal.funcaoTransferenciaFadLocal.indAplbFcaoTrfer",aplicabilidades));
criteria.addOrder(Order.asc("numeroFaseCrespTrferFadLocal"));
mais não esta funcionando acessando os atributos pelo “.”
todas as classes dessa query estao com fetch EAGER.
ParametroTransferenciaFaseFadLocal(tem o atributo manytoone funcaoTransferenciaFaseFadLocal)
FuncaoTransferenciaFaseFadLocal(tem o atributo manytoone funcaoTransferenciaFadLocal)
e preciso q a query verifique os campos da classe FuncaoTransferenciaFadLocal que a a mãe de todas.
Classe : FuncaoTransferenciaFaseFadLocal
@JoinColumn(name = "COD_FCAO_TRFER_FAD_LOCAL")
@ManyToOne(fetch=FetchType.EAGER)
private FuncaoTransferenciaFadLocal funcaoTransferenciaFadLocal;
Classe ParametroTransferenciaFaseFadLocal
@JoinColumn(name = "COD_FCAO_TRFER_FASE_FAD_LOCAL")
@ManyToOne(fetch=FetchType.EAGER)
private FuncaoTransferenciaFaseFadLocal funcaoTransferenciaFaseFadLocal;
Fico no aguardo e desde já agradeço.
paribe
Julho 30, 2009, 11:03am
#2
Criteria c = getSession().createCriteria(Assistencia.class);
c.createAlias("postos", "postos");
c.createAlias("postos.posto", "posto");
c.add(Restrictions.eq("posto.id", postoId));
paraibe vlws pela dica, ajudou bastante!
tipo olha esse caso(ficticio só para exemplificar meu problema real), se tenho o seguinte relacionamento
Cliente é a classe principal e as classes ContaPagar e CartaoCredito tem um relacionamento manytoone com o cliente
tipo como faço em criteria para pegar todas as contas que tenhao cliente com cartao de credito igual a visa?
Prometo que essa é a ultima pergunta!To com um projeto com criteria para entregar ontem(rs)! e só
falta resolver esse problema!
Ficarei no aguardo e desde já agradeço
[RESOLVIDO]
solução:
public List<ContaPagar> buscaContasComBandeiraVisa() {
List<ContaPagar> contas = new ArrayList<ContaPagar>();
Criteria c = getSession().createCriteria(ContaPagar.class);
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
c.createAlias("cliente", "c");
c.createAlias("c.cartoes", "d");
c.add(Restrictions.eq("d.bandeira", "visa"));
c.addOrder(Order.asc("c.nome"));
List lista = c.list();
for (Object object : lista) {
contas.add((ContaPagar) object);
}
return contas;
}
quando isso acontecer criar relacionamento onetomany na classe principal!!
Obrigado ai paribe pela dica!
Abraços e até a proxima !=D
paribe
Julho 30, 2009, 12:53pm
#5
Criteria c = getSession().createCriteria(Cliente.class);
c.createAlias("pagar", "pagar");
c.createAlias("cartao", "cartao");
c.add(Restrictions.eq("cartao.id", "VISA"));
return c.list();