JPA Hibernate Postgres精度不起作用

时间:2013-07-17 08:26:20

标签: java hibernate postgresql jpa entitymanager

我正在尝试运行下面的查询,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中使用精度吗?

2 个答案:

答案 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查询运行,并且有效。