Springboot中编写testcase,程序执行数据库写入一条数据时,出现了“ Table 'XXX.hibernate_sequence' doesn't exist”的错误
经过排查,是由于使用@GeneratedValue
注解时,没有指定生成策略。
/**商户id,主键*/
@Id
@GeneratedValue()
@Column(name="id",nullable=false)
private Integer id;
改为@GenerationValue(strategy = GenerationType.IDENTITY)即可。
猜测:
GenerationType
为枚举类型,包括了TABLE
, SEQUENCE
, IDENTITY
和 AUTO
.
若没有指定,默认为AUTO,即持久化引擎自主选择前三种生成方式的其中一种。可能是选择错误。
结论:
- 使用@GenerationValue注解时,最好显式地指定生成策略,避免错误的发生。
参考
版权声明:
本文为智客工坊「凌峰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。