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

JPA更新@Enumerated枚举字段时出现near 'group'语法错误如何解决

问题根因

报错的核心原因是 group 是 SQL标准保留关键字,Hibernate生成更新SQL时直接使用group作为列名,触发了SQL语法错误。当你不设置group属性时,更新语句不会包含该字段,因此不会触发报错。

解决方案

你可以任选以下任意一种方案解决:

  • 方案1:自定义列名避开保留字
    在group字段上添加@Column注解指定非保留字的列名,示例代码:
@Enumerated(EnumType.STRING)
@Column(name = "macronutrient_group")
private Group group;
  • 方案2:开启Hibernate自动转义标识符
    如果你不想修改字段映射的列名,可以开启Hibernate全局标识符转义配置,会自动给所有表名、列名添加对应数据库的引号,避开保留字冲突。
    如果是Spring Boot项目,在application.yml中添加配置:
spring:
  jpa:
    hibernate:
      globally_quoted_identifiers: true

如果是原生Hibernate项目,在hibernate.properties中添加:

hibernate.globally_quoted_identifiers=true
  • 方案3:手动转义列名
    也可以直接在@Column注解的name属性中手动加转义字符,适配不同数据库:
    • MySQL适配(用反引号):
    @Enumerated(EnumType.STRING)
    @Column(name = "`group`")
    private Group group;
    
    • PostgreSQL适配(用双引号):
    @Enumerated(EnumType.STRING)
    @Column(name = "\"group\"")
    private Group group;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:01