You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Batch项目中HSQL使用COUNT(*)报标识符错误如何解决

问题原因

你当前调用的em.createQuery()方法接收的是JPQL(Java持久化查询语言)语句,而非原生SQL语句,HSQL对应的JPQL实现不支持直接在COUNT函数中传入*符号,所以触发了语法错误。

解决方案

下面两种方案二选一即可:

  • 方案1:按照JPQL规范改写COUNT写法(最推荐)
    直接将COUNT()替换为COUNT(实体别名)即可,和COUNT()效果完全一致,都是统计分组后的行总数,修改后的查询代码如下:
    em.createQuery("SELECT m.team1 , COUNT(m) FROM match m GROUP BY m.team1",Objects::class.java)
    
  • 方案2:使用原生SQL查询
    如果你需要保留COUNT(*)的写法,可以改用原生SQL查询方法,替换createQuery为createNativeQuery即可:
    em.createNativeQuery("SELECT m.team1 , COUNT(*) FROM match m GROUP BY m.team1",Objects::class.java)
    
额外注意事项

match是SQL标准保留字,你直接用作实体/表名可能会后续触发其他语法报错,建议给对应的实体补充表名注解规避保留字冲突:

@Table(name = "`match`")
@Entity
class Match {
  // 原有实体逻辑
}

内容的提问来源于stack exchange,提问作者Mama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:07