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

Spring Boot多模型使用时出现500错误及SQL语法问题求助

问题分析与解决方案

核心问题

日志中的SQL Error: 1064是因为**order是MySQL的保留关键字**,Hibernate生成的SQL直接使用order作为表名,导致语法解析失败。

具体修复步骤

1. 修正Order实体的表名配置

你的Order实体中@Table(schema = "order")配置错误:schema属性用于指定数据库(Schema),而非表名;同时order作为关键字,必须转义才能作为表名使用。

修改后的Order实体代码:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.Table;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
// 方案1:用反引号包裹关键字,避免语法错误
@Table(name = "`order`") 
// 方案2:改用非关键字表名(更推荐,避免后续其他问题)
// @Table(name = "t_order")
public class Order {

    @Id
    @GeneratedValue
    private int id;
    private String product_name;
    private int quantity;
}

2. 修正请求体的字段拼写错误

你的Postman请求体中存在拼写错误:"proudct_name"应为"product_name",否则字段无法正确映射,导致插入的数据字段值为null。

修正后的请求体:

[
    {   
        "product_name":"sand",
        "quantity":5
    },
    {       
        "product_name":"fruit",
        "quantity":2
    }
]

3. 优化代码规范(可选但推荐)

OrderService中Repository变量名不符合Java命名规范,建议修改为小写开头:

@Service
public class OrderService {

    @Autowired
    private OrderRepository orderRepository;

    public List<Order> saveOrders(List<Order> orders) {
        return orderRepository.saveAll(orders);
    }
}

验证方案

  1. 确保数据库配置正确,且开启了Hibernate自动建表(在application.properties/application.yml中配置spring.jpa.hibernate.ddl-auto=update),让Hibernate自动创建符合要求的表结构。
  2. 重启Spring Boot服务,用修正后的请求体调用/add/orders接口,即可正常插入数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:20:53