0

I have this query writen in hql that is throwing a NullPointerException and I can't see why. Usually is thrown a more specific exception, related to sql grammar.

select sum(coalesce(opt.qtVagasEdital, 1)) - sum( 
   (select count(b.id) 
    from Bolsa b 
    where b.cotaBolsaAtual.id = cb.id 
    and ( now() between b.dataInicio and b.dataFim ) 
    and (b.idEdital = opt.idEdital )) 
) 
from OportunidadeEstagio opt 
where opt.cotaBolsa.id = cb.id 
and (opt.registroInativacao.id is null)

idEdital can be null in both Bolsa and OportunidadeEstagio, but when I convert the query to SQL using Postgres it works just fine.

The nullpointer is thrown in

Query query = getSession().createQuery(queryHql);

Stacktrace:

Caused by: java.lang.NullPointerException
 at org.hibernate.dialect.Dialect$3.getReturnType(Dialect.java:102)
 at org.hibernate.hql.ast.util.SessionFactoryHelper.findFunctionReturnType(SessionFactoryHelper.java:382)
 at org.hibernate.hql.ast.tree.AggregateNode.getDataType(AggregateNode.java:21)
 at org.hibernate.hql.ast.tree.BinaryArithmeticOperatorNode.initialize(BinaryArithmeticOperatorNode.java:29)
 at org.hibernate.hql.ast.HqlSqlWalker.prepareArithmeticOperator(HqlSqlWalker.java:1011)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.arithmeticExpr(HqlSqlBaseWalker.java:2756)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2006)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1825)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2014)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.aliasedSelectExpr(HqlSqlBaseWalker.java:2057)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1832)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
 at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
 at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
 at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
 at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
 at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
 at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
 at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
 at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
 at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
 at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
Rohan
  • 2,970
  • 1
  • 18
  • 26
  • Likely `getSession()` is returning `null`. Post the full stack trace and have a look at [this question](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – BackSlash Aug 18 '17 at 14:07
  • Looks like getSession() is having as null value? Just check once! – nagendra547 Aug 18 '17 at 14:07
  • someone knows if I can do sum(field) - sum(anotherField) in hql ???? – ronny_moura Aug 18 '17 at 14:30
  • getSession() is not returning null, I can ensure it. The nullpointer comes with this very stretch of the query. The query is larger as a whole, but it's just this point that throw the NullPointerException. – ronny_moura Aug 18 '17 at 17:22

0 Answers0