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); } }
验证方案
- 确保数据库配置正确,且开启了Hibernate自动建表(在
application.properties/application.yml中配置spring.jpa.hibernate.ddl-auto=update),让Hibernate自动创建符合要求的表结构。 - 重启Spring Boot服务,用修正后的请求体调用
/add/orders接口,即可正常插入数据。
内容的提问来源于stack exchange,提问作者user20112858
相关产品推荐
相关产品推荐

