private static boolean atualizarCarencia(Segurado segurado, Long idTitular) throws Exception { String sqlConsignacao = "select min(c.dataDoCredito) from ConsignacaoSegurado c where c.titular.idSegurado = :idTitular " + "and c.statusConsignacao = 'P' and c.dataDoCredito >= :dataAdesao"; String sqlCobranca = "select min(c.dataPagamento) from Cobranca c where c.titular.idSegurado = :idTitular " + "and descricao = 'Pago(a)' and c.dataPagamento >= :dataAdesao"; Query queryConsignacao = HibernateUtil.currentSession().createQuery(sqlConsignacao); Query queryCobranca = HibernateUtil.currentSession().createQuery(sqlCobranca); queryConsignacao.setLong("idTitular", idTitular); queryConsignacao.setDate("dataAdesao", segurado.getDataAdesao()); Date inicioCarencia = (Date) queryConsignacao.uniqueResult(); if (inicioCarencia == null) { queryCobranca.setLong("idTitular", idTitular); queryCobranca.setDate("dataAdesao", segurado.getDataAdesao()); inicioCarencia = (Date) queryCobranca.uniqueResult(); } if (inicioCarencia != null) { System.out.println(segurado.getNumeroDoCartao() + " - " + inicioCarencia); segurado.setInicioDaCarencia(inicioCarencia); ImplDAO.save(segurado); return true; } return false; }
@SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { TransactionManagerHibernate tmh = new TransactionManagerHibernate(); tmh.beginTransaction(); List<Segurado> seguradosComCarenciaNula = HibernateUtil.currentSession() .createQuery("Select s from Segurado s where s.inicioDaCarencia is null") .list(); for (Segurado segurado : seguradosComCarenciaNula) { if (segurado.isSeguradoTitular() || segurado.isSeguradoPensionista() || segurado.isSeguradoDependenteSuplementar()) { atualizarCarencia(segurado, segurado.getIdSegurado()); } else { atualizarCarencia(segurado, segurado.getTitular().getIdSegurado()); } } tmh.commit(); }