Amigos tenho a tabela A1 e a table A2 a A1 possui um ou varios registros na A2 e a A2 so pode ter 1 e exclusivamente 1 resgistro da A1 , ligacao simples
agora eu quero fazer uma DetachedCriteria +/- assim:
DetachedCriteria criteria = DetachedCriteria.forClass(A2.class);
criteria.add(Restrictions.ge("dtPedido", dataInicial));
criteria.add(Restrictions.le("dtPedido", dataFinal));
criteria.add(Restrictions.or(Restrictions.ilike("a1.nmCliente", "%"+nmCliente+"%"), Restrictions.like("a1.nmEmailCliente", nmCliente)));
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
e possivel?
entederam? eu quero da minha A2 buscar tudo que na A1(registro) tenha um determinado valor…
obrigado
é possivel sim você cria um alias
DetachedCriteria criteria = DetachedCriteria.forClass(A2.class);
criteria.createAlias("a1","objeto");//transforma pega a entidade a1 que esta dentro de A2 e nas consultas utiliza-se do alias objeto para poder acessar
criteria.add(Restrictions.ge("dtPedido", dataInicial));
criteria.add(Restrictions.le("dtPedido", dataFinal));
criteria.add(Restrictions.or(Restrictions.ilike("objeto.nmCliente", "%"+nmCliente+"%"), Restrictions.like("objeto.nmEmailCliente", nmCliente)));//aqui ao inves de usar A1 utiliza-se o alias objeto
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
outra coisa ao inves de usar
utilize o MatchMode
Boa funcionou com o Alias, agora outra pergunta, e possivel eu fazer um OR com mais de duas opcoes? pq o o OR ele pede uma virgula outra restricao
gostaria de fazer algo assim:
codigo = 1 AND (nm = 1 or cidade = ‘sp’ or estado = ‘sp’ or regiao = ‘bs’)
obrigado
Expression exp1,exp2..
LogicalExpression exp = Restrictions.and( exp1 , exp2 );
exp = Restrictions.and(exp, exp3);
criteria.add( exp );