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

Spring Batch项目使用count查询抛出got '*'错误该如何解决?

问题解决办法

错误原因

你使用的EntityManager.createQuery()默认接收JPQL(Java持久化查询语言)语法语句,而非原生SQL,部分JPA实现(如高版本Hibernate)对JPQL的语法校验更严格,不允许直接写count(*),所以抛出该语法错误。

解决方案

有两种可直接落地的修改方式,任选其一即可:

  • 方案1:调整JPQL语法,将所有查询语句中的count(*)替换为count(m)(m为Match实体的别名,统计逻辑和count(*)完全一致)
    修改后的查询示例:
    // 第一个查询修改后
    em!!.createQuery(
        "select m.team1, count(m) from Match m group by m.team1",
        Array<Any>::class.java
    )
    // 剩余两个查询同步将count(*)改为count(m)即可
    
  • 方案2:如果要保留原生SQL写法,将所有调用createQuery的地方改为createNativeQuery,不需要修改SQL语句内容,示例:
    em!!.createNativeQuery(
        "select m.team1, count(*) from Match m group by m.team1",
        Array<Any>::class.java
    )
    

补充验证点

修改后如果仍有报错,可以检查Match实体类的字段映射是否正确,确认team1、team2、matchWinner字段和实体属性名完全匹配,无拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:39:03