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

Java项目查询MySQL报错Unknown column 'end' in 'field list'如何解决

问题根因

end属于MySQL的保留关键字,Hibernate默认生成SQL时不会自动给保留关键字做转义处理,导致MySQL将SQL语句里的end识别为语法关键字而非列名,最终抛出字段不存在的错误。


解决方案

  • 方案1:仅针对end字段做转义,修改实体类中end字段的@Column注解,给列名包裹反引号:
@Column(name = "`end`")
private DateTime end = new DateTime();
  • 方案2:开启全局标识符自动转义,在项目的application配置文件中添加如下配置,让Hibernate自动给所有表名、列名添加转义引号,彻底避免保留关键字冲突问题:
    若使用application.properties:
    spring.jpa.properties.hibernate.globally_quoted_identifiers=true
    
    若使用application.yml:
    spring:
      jpa:
        properties:
          hibernate:
            globally_quoted_identifiers: true
    

其他潜在问题提示

  1. 当前Repository层的findActiveWhateverEntities方法声明了两个入参,但写的JPQL语句并没有使用这两个参数,后续如果需要按参数过滤数据需要补充对应的WHERE条件。
  2. 实体类中关联字段命名为image,对应的Getter方法为getImage(),但DTO构造方法中调用了whateverEntity.getHeaderImage()会导致运行时报错,需要修改为whateverEntity.getImage(),或者修改实体类字段名为headerImage和业务逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:39:02