字段 'user_id' 没有默认值,但设置为 auto_increment

Posted

技术标签:

【中文标题】字段 \'user_id\' 没有默认值,但设置为 auto_increment【英文标题】:Field 'user_id' doesn't have a default value, but is set to auto_increment字段 'user_id' 没有默认值,但设置为 auto_increment 【发布时间】:2020-03-08 11:56:07 【问题描述】:

所以我正在尝试构建一个膳食计划程序,但是当我尝试提交用户名时,它给了我标题中显示的错误。我尝试向我的类添加额外的映射,我为 User 类创建了一个新的 repo,但我不确定为什么程序没有像它应该的那样自动增加 user_ID 值。

这是我有问题的 mysql 表:

CREATE TABLE `user_table` (
  `user_id` int NOT NULL AUTO_INCREMENT,
  `user_name` varchar(30),
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

这是用户类:

@Entity
@Table(name="user_table")
public class User 

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name="user_ID")
    private int userID;

    @Column(name="user_name")
    private String userName;

    public User() 
        super();

        // TODO Auto-generated constructor stub
    

    public User(int userID, String userName) 
        super();
        this.userID = userID;
        this.userName = userName;
    

    public int getUserID() 
        return userID;
    
    public void setUserID(int userID) 
        this.userID = userID;
    
    public String getUserName() 
        return userName;
    

    public void setUserName(String userName) 
        this.userName = userName;
    

    @Override
    public String toString() 

        return "User [userID=" + userID + ", userName=" + userName + "]";
    

用户类附加到的 repo:

@Repository
public interface MealPlannerRepositoryUser extends JpaRepository<User, Long>


以及我的控制器类中的相关方法:

    @Autowired
    MealPlannerRepository repo;

    @Autowired
    MealPlannerRepositoryUser userRepo;

    @GetMapping("/inputUser")
    public String addNewUser(Model model) 
        User u = new User();
        Meal m = new Meal();
        model.addAttribute("newUser", u);
        model.addAttribute("newMeal", m);
        return "inputUser";
    

    @PostMapping("/inputUser")
    public String addNewUser(@ModelAttribute User u, Meal m, Model model) 
        userRepo.save(u);
        repo.save(m);
        model.addAttribute("newUser", repo.findAll());
        model.addAttribute("newMeal", repo.findAll());
        return "results";
    

我一定是在什么地方遗漏了什么,但我没有想法。

【问题讨论】:

你找到答案了吗? 【参考方案1】:

我不确定这是否区分大小写,但 User 类中的注释 @Column('user_ID') 与 SQL 查询中的列名 'user_id' 不匹配。

【讨论】:

可悲的是,它是否大写都没关系。 SQL 不区分大小写,因此它应该以任何一种方式读取。 查询可以不区分大小写,但 ORM 框架可以区分大小写。尝试在您的实体类中匹配大小写,看看是否可行。【参考方案2】:

实体类user_ID与列名user_id不匹配,实体类user_id改变

【讨论】:

以上是关于字段 'user_id' 没有默认值,但设置为 auto_increment的主要内容,如果未能解决你的问题,请参考以下文章

数据库的表“工作日期”字段默认值为系统当前日期的后一天 该怎么填

java hibernate mariaDB 列“字段”不能为空

php中的mysql数据库的,字段默认值该怎么输入,啥格式?

angular 下拉框null默认值

MySQL字段默认值设置详解

如何设置access数据表的字段默认值为0