本文主要是介绍@GeneratedValue主键并没有自增,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学习springboot中的数据库操作,用到data-jpa,创建实体类的时候需要添加主键的注解以及自增
开始是这样写的:
import javax.persistence.GeneratedValue
import javax.persistence.Id@Id
@GeneratedValue
private Integer id;
但是结果并不是预期想象的那样
这里会生成两张表
其中girl是我需要创建的表,这个hibernate_sequence是什么鬼?应该是个需要创建的表的一个排序吧,猜测的,先不管这个
而且并没有自增!
为什么会这样呢?
了解一下@GeneratedValue
这个注解:
它有一个属性:strategy,意思很明显,就是一种策略,它有四个属性值:
IDENTITY //采用数据库ID自增长的方式来自增主键字段,Oracle 不支持这种方式;
AUTO //JPA自动选择合适的策略,是默认选项;
SEQUENCE //通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
TABLE //通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。
为了达到我们的要求,这里我们改成@GeneratedValue(strategy = GenerationType.IDENTITY)
就可以了
参考:
https://blog.csdn.net/qq_15037231/article/details/78284884
这篇关于@GeneratedValue主键并没有自增的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!