我正在尝试运行下面的查询,Postgres
数据库。
select new map(avg(cast (speed as double precision)) as avg)
from table
speed
列的类型为varchar
我正在使用JPA执行如下
em = entityManagerFactory.createEntityManager();
Query hqlQuery = em.createQuery(query);
reportList = hqlQuery.getResultList();
当我运行时,我得到错误
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE,
found 'precision' near line 1
有没有人遇到过这种情况?我不能在Hibernate中使用精度吗?
答案 0 :(得分:2)
如果您尝试通过JPA在{Hibernate中执行本机SQL,you need to use em.createNativeQuery
。
em.createQuery
期望JPQL中的一个参数,一种从HQL派生的查询语言,直到Hibernate的JPQL实现使用org.hibernate.hql
类。
但是,这看起来不像有效的SQL。 new map(...)
?你不能混用JPQL / HQL,我没有在SQL方言中看到new
。
答案 1 :(得分:0)
我改变了
select new map(avg(cast (speed as double precision)) as avg)
from table
到
select new map(avg(cast (speed as double)) as avg)
from table
Hibernate
支持这一点。我仍然以HQL
查询运行,并且有效。