如何在Eclipselink中按子串分组?

时间:2015-12-23 10:32:08

标签: group-by eclipselink jpql

我试图按商店国家对商店进行分组,看看每个国家/地区有多少商店。商店国家恰好是商店代码的前2个字符。这意味着如果商店代码为" US000010",则该国家/地区为" US"

我的实体对象:

...
public class Store {
    @column(name = "code")
    private String code;
    ...    
}

我的JPQL是:

  SELECT substring(s.code, 0, 2),
         count(s) 
    FROM Store s 
GROUP BY substring(s.code, 0, 2)

这一直让我ORA-00979: not a GROUP BY expression,我怀疑这是由于上面的JPQL转换为

SELECT SUBSTR(CODE, ?, ?), COUNT(CODE) FROM Store GROUP BY SUBSTR(CODE, ?, ?)

除了创建视图或使用本机查询等其他替代方法,我是否有办法使用JPQL在Eclipselink中通过子字符串执行组?

1 个答案:

答案 0 :(得分:0)

我最近在通过TO_CHAR函数分组时遇到了类似的问题。我找到的解决方案特定于ExclipseLink,它只是在查询上设置提示:query.setHint(QueryHints.BIND_PARAMETERS, HintValues.FALSE);

在执行查询之前放置此代码,它将不使用参数,而是直接替换发送到JDBC驱动程序的SQL字符串上的值