package gcom.arrecadacao.repositorio; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.hibernate.Session; import gcom.arrecadacao.Devolucao; import gcom.faturamento.credito.CreditoARealizar; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; public class RepositorioDevolucao { private static RepositorioDevolucao instance; private RepositorioDevolucao(){} public static RepositorioDevolucao getInstance(){ if (instance == null){ instance = new RepositorioDevolucao(); } return instance; } public boolean existeCreditoComDevolucao(Collection<CreditoARealizar> creditosRealizar) throws ErroRepositorioException{ return !buscarDevolucaoPorCreditoRealizar(creditosRealizar).isEmpty(); } @SuppressWarnings("unchecked") public Collection<Devolucao> buscarDevolucaoPorCreditoRealizar(Collection<CreditoARealizar> creditosARealizar) throws ErroRepositorioException{ Collection<Devolucao> resultado = new ArrayList<Devolucao>(); Session session = HibernateUtil.getSession(); List<Integer> ids = new ArrayList<Integer>(); for (CreditoARealizar credito : creditosARealizar) { ids.add(credito.getId()); } try { resultado = (Collection<Devolucao>) session.createQuery("select devolucao from Devolucao as devolucao inner join devolucao.creditoRealizar crar " + "where crar.id in (:ids)") .setParameterList("ids", ids) .list(); } catch (Exception e) { throw new ErroRepositorioException(e); }finally{ session.close(); } return resultado; } }