Usando funcões de arredondamento do HQL com uso do operador new

A minha query hql retorna uma lista de um objeto de certo tipo, sendo que um de seus atributos é a somatória de mensalidades dividida pelas parcelas.
Durante os testes verifiquei um problema de arredondamento durante a conta e então resolvi usar a função trunc do hql para arrendondar.
Acontece que quando eu a uso dentro do sum, o Hibernate parece nào encontrar um constrututor correspondente para o objeto, dando um Nullpointerexception

  select new Mensalidade('Valor da Mensalidade',s,sum(trunc(r.valorTotal/r.numeroParcelasSugerido,2))  
  [code]  FROM Curso c
    JOIN  c.series s
    JOIN  s.receitaSerie r
    JOIN  r.contaContabil cc
    WHERE c.status.id = 1
    AND s.unidadeEnsino.inativa = false
    AND cc.codigo like :contaContabilCodigo
    AND cc.inativa = false
    AND s.unidadeEnsino = :unidadeEnsino
    AND s.periodoLetivo = :periodoLetivo
    AND c = :curso
    GROUP BY s
    ORDER BY s.nome[/code]

Ai resolvi não criar mais o Objeto diretamente e retornei apenas uma lista de Object[] conforme a query abaixo

  [code]  select 'Valor da Mensalidade',s,sum(trunc(r.valorTotal/r.numeroParcelasSugerido,2))  
   FROM Curso c 
    JOIN  c.series s
    JOIN  s.receitaSerie r
    JOIN  r.contaContabil cc
    WHERE c.status.id = 1
    AND s.unidadeEnsino.inativa = false
    AND cc.codigo like :contaContabilCodigo
    AND cc.inativa = false
    AND s.unidadeEnsino = :unidadeEnsino
    AND s.periodoLetivo = :periodoLetivo
    AND c = :curso
    GROUP BY s
    ORDER BY s.nome

[/code]

Mesmo assim, foi retornado um erro satanico, que desconfio ter sido o motivo do nullpointerexception do primeiro caso.
A pergunta que fica é: Seria possível usar uma função para arredondamento como o trunc (eu vi no manula do hibernate e ela existe lá)?

Erro retornado:

[code]org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘DisciplinaModel’ defined in class path resource [br/com/ultramax/gestaoescolar/core/model/modelContext.xml]: Cannot resolve reference to bean ‘transactionManager’ while setting bean property ‘transactionManager’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [br/com/ultramax/gestaoescolar/core/coreContext.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [br/com/ultramax/gestaoescolar/core/coreContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode
-[AGGREGATE] AggregateNode: ‘sum’
-[METHOD_CALL] MethodNode: '('
±[METHOD_NAME] IdentNode: ‘trunc’ {originalText=trunc}
-[EXPR_LIST] SqlNode: 'exprList’
±[DIV] BinaryArithmeticOperatorNode: ‘/’ {dataType=org.hibernate.type.DoubleType@1669521}
| ±[DOT] DotNode: ‘configurac3_.cre_valorTotal’ {propertyName=valorTotal,dereferenceType=4,propertyPath=valorTotal,path=r.valorTotal,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| | ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| | -[IDENT] IdentNode: ‘valorTotal’ {originalText=valorTotal}
| -[DOT] DotNode: ‘configurac3_.cre_numeroParcelasSugerido’ {propertyName=numeroParcelasSugerido,dereferenceType=4,propertyPath=numeroParcelasSugerido,path=r.numeroParcelasSugerido,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| -[IDENT] IdentNode: ‘numeroParcelasSugerido’ {originalText=numeroParcelasSugerido}
-[NUM_INT] LiteralNode: ‘2’

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
at br.com.ultramax.gestaoescolar.core.test.TestUtil.getBean(TestUtil.java:213)
at br.com.ultramax.gestaoescolar.core.test.report.MensalidadeReportModelTest.setUp(MensalidadeReportModelTest.java:484)
at junit.framework.TestCase.runBare(TestCase.java:128)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘transactionManager’ defined in class path resource [br/com/ultramax/gestaoescolar/core/coreContext.xml]: Cannot resolve reference to bean ‘sessionFactory’ while setting bean property ‘sessionFactory’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [br/com/ultramax/gestaoescolar/core/coreContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode
-[AGGREGATE] AggregateNode: ‘sum’
-[METHOD_CALL] MethodNode: '('
±[METHOD_NAME] IdentNode: ‘trunc’ {originalText=trunc}
-[EXPR_LIST] SqlNode: 'exprList’
±[DIV] BinaryArithmeticOperatorNode: ‘/’ {dataType=org.hibernate.type.DoubleType@1669521}
| ±[DOT] DotNode: ‘configurac3_.cre_valorTotal’ {propertyName=valorTotal,dereferenceType=4,propertyPath=valorTotal,path=r.valorTotal,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| | ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| | -[IDENT] IdentNode: ‘valorTotal’ {originalText=valorTotal}
| -[DOT] DotNode: ‘configurac3_.cre_numeroParcelasSugerido’ {propertyName=numeroParcelasSugerido,dereferenceType=4,propertyPath=numeroParcelasSugerido,path=r.numeroParcelasSugerido,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| -[IDENT] IdentNode: ‘numeroParcelasSugerido’ {originalText=numeroParcelasSugerido}
-[NUM_INT] LiteralNode: ‘2’

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 26 more

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘sessionFactory’ defined in class path resource [br/com/ultramax/gestaoescolar/core/coreContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode
-[AGGREGATE] AggregateNode: ‘sum’
-[METHOD_CALL] MethodNode: '('
±[METHOD_NAME] IdentNode: ‘trunc’ {originalText=trunc}
-[EXPR_LIST] SqlNode: 'exprList’
±[DIV] BinaryArithmeticOperatorNode: ‘/’ {dataType=org.hibernate.type.DoubleType@1669521}
| ±[DOT] DotNode: ‘configurac3_.cre_valorTotal’ {propertyName=valorTotal,dereferenceType=4,propertyPath=valorTotal,path=r.valorTotal,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| | ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| | -[IDENT] IdentNode: ‘valorTotal’ {originalText=valorTotal}
| -[DOT] DotNode: ‘configurac3_.cre_numeroParcelasSugerido’ {propertyName=numeroParcelasSugerido,dereferenceType=4,propertyPath=numeroParcelasSugerido,path=r.numeroParcelasSugerido,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| -[IDENT] IdentNode: ‘numeroParcelasSugerido’ {originalText=numeroParcelasSugerido}
-[NUM_INT] LiteralNode: ‘2’

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 39 more

Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode
-[AGGREGATE] AggregateNode: ‘sum’
-[METHOD_CALL] MethodNode: '('
±[METHOD_NAME] IdentNode: ‘trunc’ {originalText=trunc}
-[EXPR_LIST] SqlNode: 'exprList’
±[DIV] BinaryArithmeticOperatorNode: ‘/’ {dataType=org.hibernate.type.DoubleType@1669521}
| ±[DOT] DotNode: ‘configurac3_.cre_valorTotal’ {propertyName=valorTotal,dereferenceType=4,propertyPath=valorTotal,path=r.valorTotal,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| | ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| | -[IDENT] IdentNode: ‘valorTotal’ {originalText=valorTotal}
| -[DOT] DotNode: ‘configurac3_.cre_numeroParcelasSugerido’ {propertyName=numeroParcelasSugerido,dereferenceType=4,propertyPath=numeroParcelasSugerido,path=r.numeroParcelasSugerido,tableAlias=configurac3_,className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita,classAlias=r}
| ±[ALIAS_REF] IdentNode: ‘configurac3_.cre_ID’ {alias=r, className=br.com.ultramax.gestaoescolar.core.domain.ConfiguracaoReceita, tableAlias=configurac3_}
| -[IDENT] IdentNode: ‘numeroParcelasSugerido’ {originalText=numeroParcelasSugerido}
-[NUM_INT] LiteralNode: ‘2’

at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:140)
at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:637)
at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:466)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:645)
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:218)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:363)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:327)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 49 more[/code]