您的位置:首页 > 产品设计 > UI/UE

关于hibernate在数据库中生成hibernate_sequence表时报错的解决方案

2017-08-23 08:47 369 查看
在mysql数据库中,使用hibernate自动生成数据表的同时,数据库会自动生成hibernate_sequence表,

如果删除该表,就会报错:could not read a hi value - you
need to populate the table: hibernate_sequence

解决办法:

发现我的表里面使用的主键生成策略的方式为:@GeneratedValue(strategy = GenerationType.AUTO),

只要把它修改成:@GeneratedValue(strategy = GenerationType.IDENTITY),

就不会报错了。

分析:

1.使用@GeneratedValue(strategy = GenerationType.AUTO)的时候,实际上是把主键生成策略交给持久化引擎,

持久化引擎会根据数据库自GenerationType.TABLE,GenerationType.SEQUENCE,GenerationType.IDENTITY    中去找一种主键生成策略,也可以直接写成@GeneratedValue,如果数据库现在的是table或者是sequence,而非indentity时,就会报上面的错误;

2.使用@GeneratedValue(strategy = GenerationType.IDENTITY)的时候,数据库指定了生成策略就是主键自动增长。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate 数据库
相关文章推荐