Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate MySQL支持的ID生成策略_Hibernate - Fatal编程技术网

Hibernate MySQL支持的ID生成策略

Hibernate MySQL支持的ID生成策略,hibernate,Hibernate,这与Hibernate框架有关。MySQL支持哪些ID生成策略? 通过hibernate文档,我知道它不支持“sequence”类 当我使用“已分配”和“增量”类时,我能够成功地持久化对象 但使用“标识”会导致sql异常,原因是“字段id(映射到表中主键的属性)没有默认值”。在使用“identity”类之前,我们是否必须指定一些默认值?要使用identity策略,您必须使用auto_increment,例如 创建表'table_name'('id'int not null auto_increm

这与Hibernate框架有关。MySQL支持哪些ID生成策略? 通过hibernate文档,我知道它不支持“sequence”类

当我使用“已分配”和“增量”类时,我能够成功地持久化对象


但使用“标识”会导致sql异常,原因是“字段id(映射到表中主键的属性)没有默认值”。在使用“identity”类之前,我们是否必须指定一些默认值?

要使用identity策略,您必须使用auto_increment,例如

创建表'table_name'('id'int not null auto_increment。。。。。。 …)


我想应该可以了。

有四种策略

@GeneratedValue(策略=GenerationType.TABLE)

  • 自动——具有自动增量
  • 标识——自动递增
  • 顺序--不支持
  • 表--带有hibernate_序列表

  • 直接使用MYSQL5.2进行测试

    我使用MYSQL5方言并将自动设置为策略。但是hibernate创建一个表(hibernate5,MySQL5方言,MarianDB)?@Mostafa,在旧版本中,hibernate为MySQL数据库选择GenerationType.IDENTITY。但在Hibernate5中,情况发生了变化。它现在选择GenerationType.TABLE,它使用数据库表生成主键。