0

when applying a restriction to a field in a projection I'm having the following exception:

org.hibernate.QueryException: could not resolve property: surcursal of: com.adm_colas.model.AnalisisColas at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:83) at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:77) at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1978) at org.hibernate.loader.criteria.EntityCriteriaInfoProvider.getType(EntityCriteriaInfoProvider.java:57) at org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathInfo(CriteriaQueryTranslator.java:245) at org.hibernate.loader.criteria.CriteriaQueryTranslator.createCriteriaEntityNameMap(CriteriaQueryTranslator.java:229) at org.hibernate.loader.criteria.CriteriaQueryTranslator.(CriteriaQueryTranslator.java:112) at org.hibernate.loader.criteria.CriteriaLoader.(CriteriaLoader.java:88) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1663) at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380) at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:402) at com.adm_colas.dao.AnalisisColasDAOImpl.getSumGroupBy(AnalisisColasDAOImpl.java:121)

This is the class I'm querying:

 @Entity
 @Table(name = "analisis_colas", catalog = "colas")
 public class AnalisisColas implements java.io.Serializable {
/**
 * 
 */
private static final long serialVersionUID = 1L;

private Integer id;
private Date fecha;
private Sucursales sucursal;
private String dia;
private Double semana;
private Integer mes;
private String turno;
private Turnos turnoSucursal;
private Timestamp horaDesde;
private Double tasaEntrada;
private Double clientesNoAtendidos;
private Double tasaServicio;
private Date tiempoEsperaPromedio;
private Timestamp tiempoServicioPromedio;
private Timestamp tiempoTotalPromedio;
private Double tiempoTotalPromedioDec;
private Timestamp maximoTiempoEspera;
private Timestamp maximoTiempoServicio;
private Timestamp horaHasta;
private Double utilizacion;
private Double probSistemaVacio;
private Double probabilidadClienteEsper;
private Double nivelServicioActual;

And this is the code which is cracking my head:

 public List<AnalisisColas> getGroupBy(AnalisisColas a) {
    Session session = this.sessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria(AnalisisColas.class);

    criteria.setProjection(
            Projections
                    .projectionList()
                    .add(Projections.groupProperty("sucursal"), "sucursal")
                    .add(Projections.groupProperty("dia"), "dia")
                    .add(Projections.groupProperty("semana"), "semana")
                    .add(Projections.groupProperty("mes"), "mes")
                    .add(Projections.groupProperty("turnoSucursal"),
                            "turnoSucursal")
                    .add(Projections.avg("tasaEntrada"), "tasaEntrada")
                    .add(Projections.avg("tasaServicio"), "tasaServicio"))
            .setResultTransformer(
                    Transformers.aliasToBean(AnalisisColas.class));

    if (a.getSucursal() != null) {
        criteria.createAlias("surcursal", "s").add(
                Restrictions.like("s.nombre", a.getSucursal().getNombre()));
    }
    if (a.getMes() != null) {
        criteria.add(Restrictions.eq("mes", a.getMes()));
    }
    if (a.getSemana() != null) {
        criteria.add(Restrictions.eq("semana", a.getSemana()));
    }
    if (a.getDia() != null) {
        criteria.add(Restrictions.eq("dia", a.getDia()));
    }
    if (a.getTurnoSucursal() != null) {
        criteria.createAlias("turnoSucursal", "ts").add(
                Restrictions.eq("ts.turnoId", a.getTurnoSucursal()
                        .getTurnoId()));
    }
    List<AnalisisColas> analisisColasList = criteria.list();
    return analisisColasList;
}

Any ideas will be appreciated.

1
  • Not able to find Getter method of .AnalisisColas Commented Nov 29, 2014 at 6:23

1 Answer 1

1

Not sure about the Spanish names, i.e. about the meaning.. but Hibernate message is pretty clear:

could not resolve property: surcursal of: com.adm_colas.model.AnalisisColas

See the word surcursal, mostly the beginning sur...

While your entity is

public class AnalisisColas implements java.io.Serializable {
...
private Sucursales sucursal;

The name is: sucursal, mostly the beginning suc...

So, this part of the query is wrong:

if (a.getSucursal() != null) {    
    // here SUR... instead of SUC...
    criteria.createAlias("surcursal", "s").add( 
            Restrictions.like("s.nombre", a.getSucursal().getNombre()));
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks!, maybe after two days of coding my head was sending a message to stop!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.