java.lang.NullPointerException at org.hibernate.hql.ast.tree.FromClause.findIntendedAliasedFromElementBasedOnCrazyJPARequirements(FromClause.java:120)
at org.hibernate.hql.ast.tree.FromClause.getFromElement(FromClause.java:107)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:81)
Con la siguiente query HQL:
hql = "select count(e.notif) from Estado e ";
hql += "where e.notif.idApp = :idaplic ";
hql += "and e.estado='BAJA' ";
hql += "and e.fechaHoraEstado=(select max(e1.fechaHoraEstado) from Estado e1 where e1.notif.id = e.notif.id) ";
hql += "and (select count(e2) from Estado e2 where e.notif.id = e2.notif.id and e2.estado=:estadoPreborrado)>0";
query = getJpaTemplate().getEntityManager().createQuery(hql);
query.setParameter("estadoPreborrado", estado.getMensaje());
query.setParameter("idaplic", idApp);
numNotifEstadoPreborrado = ((Long) query.getSingleResult()).intValue();
"Googleando" un poco, parece que es un bug reconocido que estará resuelto en versiones posteriores, pero si no se quiere cambiar de versión, la forma de lanzar la query sin problemas es cambiar el orden de las condiciones a:
hql = "select count(e.notif) from Estado e ";
hql += "where e.fechaHoraEstado=(select max(e1.fechaHoraEstado) from Estado e1 where e1.notif.id = e.notif.id) ";
hql += "and (select count(e2) from Estado e2 where e.notif.id = e2.notif.id and e2.estado=:estadoPreborrado)>0";
hql += "and e.notif.idApp = :idaplic ";
hql += "and e.estado='BAJA'";
query = getJpaTemplate().getEntityManager().createQuery(hql);
query.setParameter("estadoPreborrado", estado.getMensaje());
query.setParameter("idaplic", idApp);
numNotifEstadoPreborrado = ((Long) query.getSingleResult()).intValue();
No hay comentarios:
Publicar un comentario