关于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)的时候,数据库指定了生成策略就是主键自动增长。
如果删除该表,就会报错: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中关于数据库方言导致不能自动生成数据库表的问题
- 关于Hibernate3,mysql5 数据库连接超过8小时 连接超时的问题及解决方案(部分摘自网络)
- 关于MyEclipse中Hibernate实现数据库和到工程文件实体类的映射,自动生成POJO
- 关于Hibernate不能自动生成数据库表-POJO和映射文件正确但是访问对应表出错-的原因
- 通过Hibernate反向生成对应的数据库表单
- 通过hibernate实体java文件 立即生成数据库table
- 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本
- 关于“因为数据库正在使用,所以无法获得对数据库的独占访问权”的最终解决方案
- Hibernate主键生成策略和持久化对象的三种状态和MySql常用的数据库语句
- ASP页面将数据库中检索数据生成到本地报表的解决方案
- 今天总结:关于hibernate事务乐观锁和elipse启动tomcat报内存不足的最终解决方案
- 关于.NET解决方案批生成的一点探索(同一个解决方案下多项目批生成)
- 用maven整合struts+spring+hibernate之二 数据库生成和测试数据
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
- 图文教程:使用MyEclipse的hibernate工具从数据库反向生成实体Bean
- Hibernate系列之----Hibernate代码生成数据库表
- 疯了的Hibernate(4) -- 由数据库生成映射文件 hiswing [原作]
- 关于数据库的并发性的一个解决方案
- 关于数据库与Hibernate匹配时的小问题
- 使用hibernate自动生成数据库表