我试图按商店国家对商店进行分组,看看每个国家/地区有多少商店。商店国家恰好是商店代码的前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中通过子字符串执行组?
答案 0 :(得分:0)
我最近在通过TO_CHAR
函数分组时遇到了类似的问题。我找到的解决方案特定于ExclipseLink,它只是在查询上设置提示:query.setHint(QueryHints.BIND_PARAMETERS, HintValues.FALSE);
。
在执行查询之前放置此代码,它将不使用参数,而是直接替换发送到JDBC驱动程序的SQL字符串上的值