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

插入数据时遇Error Code 1364:userid字段无默认值问题求助

插入数据触发MySQL错误码1364:Field 'userid' doesn't have a default value 问题排查

报错信息

java.sql.SQLException: Field 'userid' doesn't have a default value at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130) ~[mysql-connector-j-8.3.0.jar:8.3.0]

实体类代码

@Entity
@Table(name = "users")
public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int userId;

  
}

数据库表结构

CREATE TABLE `users` (
  `user_id` int NOT NULL AUTO_INCREMENT,
  `email` varchar(255) DEFAULT NULL,
  `is_active` bit(1) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `registration_date` datetime(6) DEFAULT NULL,
  `user_type_id` int DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `UK_6dotkott2kjsp8vw4d0m25fb7` (`email`),
  KEY `FK5snet2ikvi03wd4rabd40ckdl` (`user_type_id`),
  CONSTRAINT `FK5snet2ikvi03wd4rabd40ckdl` FOREIGN KEY (`user_type_id`) REFERENCES `users_type` (`user_type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

问题原因

实体类属性userId和数据库字段user_id命名不匹配,JPA生成SQL时错误将属性名直接转为userid(未自动驼峰转下划线),而数据库中不存在userid字段,MySQL判定该字段无默认值且未提供插入值,触发1364错误。

解决办法

方法一:显式指定字段映射

在userId属性上添加@Column注解,明确对应数据库的user_id字段:

@Entity
@Table(name = "users")
public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id") // 新增此注解
    private int userId;

  
}

方法二:开启JPA自动驼峰转下划线

在项目配置文件中设置Hibernate命名策略,让JPA自动将驼峰命名的属性转为下划线分隔的数据库字段:

  • 如果是application.properties:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
  • 如果是application.yml:
spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

修改后重新执行插入操作,JPA会正确映射到自增的user_id字段,MySQL自动生成字段值,错误即可解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:18:17