[spring boot] Table ‘XXX.hibernate_sequence‘ doesn‘t exist

写测试类,向数据库保存一条数据时,出现了“ Table 'XXX.hibernate_sequence' doesn't exist”的错误

经查,是由于使用 @GeneratedValue 注解时,没有指定生成策略。

改为 @GenerationValue(strategy = GenerationType.IDENTITY)即可。

猜测:

    GenerationType为枚举类型,包括了TABLE, SEQUENCE, IDENTITY 和 AUTO.

    若没有指定,默认为AUTO,即持久化引擎自主选择前三种生成方式的其中一种。可能是选择错误。

结论:

    使用@GenerationValue注解时,最好显式地指定生成策略,避免错误的发生。

    此种主键生成策略就是通常所说的主键自增长,数据库在插入数据时,会自动给主键赋值,比如MYSQL可以在创建表时声明"auto_increment" 来指定主键自增长。该策略在大部分数据库中都提供了支持(指定方法或关键字可能不同),但还是有少数数据库不支持,所以可移植性略差。

图片.png

参考链接:

    @GenerationValue注解详解

    错误的解决方案

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值