使用Spring Data查询Order实体时出现order附近SQL语法错误问题
问题根因
你遇到的报错是因为order是PostgreSQL的保留关键字,直接用作表名会触发SQL语法解析错误,和实体的关联关系配置无关。从Hibernate生成的调试日志也能看到,生成的SQL中直接写了from order order0_,PostgreSQL解析时会把这里的order识别为ORDER BY语法的关键字,因此抛出语法错误。
解决方案
有两种可行的解决方式:
- 方案一(更推荐):修改表名避开保留关键字
把Order实体的@Table注解修改为非保留关键字的命名,同时同步修改数据库中的表名即可,示例:@Entity @Table(name = "business_order") // 替换为你自定义的非关键字表名 public class Order { // 其余代码保持不变 } - 方案二:强制转义表名
如果不想修改现有表名,可以给表名加上双引号转义,让PostgreSQL将其识别为普通表名:@Entity @Table(name = "\"order\"") public class Order { // 其余代码保持不变 }
内容的提问来源于stack exchange,提问作者Gradmorga
相关产品推荐
相关产品推荐

