Reputation: 1
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.
Upvotes: 0
Views: 959
Reputation: 123861
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()));
Upvotes: 1