diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java index 6c7c98c98..111d8966e 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java @@ -4,6 +4,7 @@ */ package com.rjconsultores.ventaboletos.dao.hibernate; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -15,7 +16,6 @@ import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; -import org.hibernate.transform.AliasToBeanResultTransformer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -29,7 +29,6 @@ import com.rjconsultores.ventaboletos.entidad.Marca; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties; -import com.sun.org.apache.bcel.internal.generic.DADD; /** * @@ -38,6 +37,8 @@ import com.sun.org.apache.bcel.internal.generic.DADD; @Repository("corridaDAO") public class CorridaHibernateDAO extends GenericHibernateDAO implements CorridaDAO { + private static final Integer maxResult = new Integer(1); + @Autowired public CorridaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); @@ -326,15 +327,15 @@ public class CorridaHibernateDAO extends GenericHibernateDAO buscarGroupCorrridaId(Integer corridaId, Date dateInicio, Date dateFin) { - StringBuffer hql = new StringBuffer(); - hql.append(" FROM Corrida "); - hql.append(" WHERE id.feccorrida BETWEEN :dateInicio AND :dateFin "); - if (corridaId != null) { - hql.append(" AND str(id.corridaId) like :corridaId "); - } + StringBuffer sql = new StringBuffer(); + sql.append(" SELECT c.corrida_id "); + sql.append(" FROM corrida c "); + sql.append(" WHERE c.feccorrida BETWEEN :dateInicio AND :dateFin "); + sql.append(" AND c.corrida_id LIKE :corridaId "); + sql.append(" GROUP BY c.corrida_id "); - Query sq = getSession().createQuery(hql.toString()); + Query sq = getSession().createSQLQuery(sql.toString()); if (corridaId != null) { sq.setParameter("corridaId", corridaId.toString() + '%'); @@ -343,13 +344,29 @@ public class CorridaHibernateDAO extends GenericHibernateDAO lsCorridasAux = sq.list(); + List lsObject = sq.list(); List lsCorridas = new ArrayList(); - if (lsCorridasAux != null && !lsCorridasAux.isEmpty()) { - lsCorridas.add(lsCorridasAux.iterator().next()); + + if (lsObject != null && !lsObject.isEmpty()) { + + for (Object object : lsObject) { + + BigDecimal id = (BigDecimal) object; + + StringBuffer hql = new StringBuffer(); + hql.append(" FROM Corrida "); + hql.append(" WHERE id.corridaId = " + id); + + Query squery = getSession().createQuery(hql.toString()); + squery.setMaxResults(maxResult); + + List lsCorridasAux = squery.list(); + + if (lsCorridasAux != null && !lsCorridasAux.isEmpty()) { + lsCorridas.add(lsCorridasAux.iterator().next()); + } + } } return lsCorridas;