Olá pessoal!
Estou com o seguinte problema: Em consultas, no oracle, usando a instrução sql IN(), existe a restrição de um máximo de 1000 valores passados dentro do IN().
Preciso passar uma quantidade maior que 1000. Utilizo hibernate “Criteria” para construir a consulta. Pensei em dividir os valores em vários vetores com, no
máximo, 1000 posições. Atualmente, a função está da seguinte forma:
public Collection<Contrato> recuperaInfoPorListaCPF(Long[] listaCPF) throws HibernateException, TransactionException {
Session sess = holder.getSession();
Criteria criteria = sess.createCriteria(Contrato.class);
criteria.createAlias(Contrato.pessoa, Contrato.pessoa);
criteria.createAlias(Contrato.desligamento, Contrato.desligamento);
criteria.add(Restrictions.in(concat(Contrato.pessoa, Pessoa.cpf), listaCPF));
return criteria.list();
}
A questão é, ao passar como parâmetro uma Collection<Long[]> (uma lista de vetores contendo todos os CPF), como eu poderia adicionar instruções do tipo Restrictions.or()
para retornar todos os valores que preciso? Ou, então, há algum parâmetro que posso setar no oracle para que aceite mais de 1000 valores dentro de uma instrução IN()?
Pessoal, desde já obrigado pela atenção!
Kallás