0

我正在尝试在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 中使用精度吗?

4

2 回答 2

2

如果您尝试通过 JPA 在 Hibernate 中执行本机 SQL,则需要使用em.createNativeQuery.

em.createQueryorg.hibernate.hql期望从 HQL 派生的查询语言 JPQL 中的参数到 Hibernate 的 JPQL 实现使用这些类的地步。

不过,这看起来也不是有效的 SQL。new map(...)? 您不能混合使用 JPQL/HQL,而且我还没有new在 SQL 方言中看到过。

于 2013-07-17T08:31:48.567 回答
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查询运行,它可以工作。

于 2013-07-17T09:14:38.040 回答