@GeneratedValue 的自增主键问题

来源:6-1 关于红包收发之操作数据库(上)

jerry4013

2019-06-10

我加完@GeneratedValue后,数据库并没有把id设置为自增主键,而是给我新建了一个叫hibernate_sequence的表。
我如果通过post的方法不需要输入id也可以按那个sequence自动生成id, 但是我如果通过insert into luckymoney(producer, money) values(“zhangsan”, 100); 这种sql语句去创建新记录,就会提示我说“ERROR 1364 (HY000): Field ‘id’ doesn’t have a default value”。
请问:

  1. 我的id是如何跟那个hibernate_sequence的表连起来的呢?如果我用navicat要怎么查看呢?
  2. 我如果想用SQL语句,如果正确的插入数据呢?
    谢谢!
写回答

2回答

坐看落花

2019-06-19

我可以跟你回答一下, 这里因为mysql本身并不具有序列这一个功能, 所以在实际开发中, 也会用到这种情况, 就是在一张表中专门存储序列, 每次取序列值之后要将这个值加1, 如果要实现插入数据,主键自增, 需要将操作分开, 也就是取主键, 插入数据这两步操作, 其中 取主键需要写存储过程, 或者分步操作, 实现过程就是这样!

0
1
jerry4013
非常感谢!
2019-06-19
共1条回复

yuzhewo

2019-06-21

一般操作都是在创建表的时候指定id auto_increment实现主键自增的,spring中这个序列化的好处跟意义还不是太能吃透,还望高手指点一二。

0
0

2小时快速上手Spring Boot

一切为了效率!两个小时学习SpringBoot,为你省时省力Get干货

11582 学习 · 249 问题

查看课程