带有Where子句中的算术运算符的org.hibernate.QueryException

时间:2013-12-24 14:44:42

标签: hibernate hql

我想在两列之间进行简单的算术运算。

我的HQL请求是:SELECT a.ht+a.tva FROM com.test.entity.TestTable a

我正在使用Hibernate 3.6.10-Final,我有这个错误:

org.hibernate.QueryException: , expected in SELECT [SELECT a.ht+a.tva FROM com.test.entity.TestTable a]
  org.hibernate.hql.classic.SelectParser.token(SelectParser.java:203)
  org.hibernate.hql.classic.ClauseParser.token(ClauseParser.java:109)
  org.hibernate.hql.classic.ClauseParser.end(ClauseParser.java:136)
  org.hibernate.hql.classic.PreprocessingParser.end(PreprocessingParser.java:145)
  org.hibernate.hql.classic.ParserHelper.parse(ParserHelper.java:52)
  org.hibernate.hql.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:240)
  org.hibernate.hql.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:209)
  org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
  org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
  org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
  org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
  org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
  org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)

但是在jboss doc chapter 16.7中,它说:

  

您可以在select子句中使用算术运算符,连接和已识别的SQL函数:

select cat.weight + sum(kitten.weight)
from Cat cat
join cat.kittens kitten
group by cat.id, cat.weight

我尝试了cast( ... as Long ),但也没有用。

有人有解决方案或推荐吗?

非常感谢, Yann Terzibachian

1 个答案:

答案 0 :(得分:0)

问题解决了! 只是我的persistence.xml中的一个问题,

我使用了这个属性:

property name="hibernate.query.factory_class" value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"

但只有org.hibernate.hql.ASTQueryTranslatorFactory提供了hibernate 3功能

非常感谢