hibernate生成器增量与表自动增量冲突

时间:2011-07-21 12:50:14

标签: hibernate generator

我在hbm文件中将生成器设置为'increment',并且我也将auto_increment事物放在数据库表中。    这个creteria显示问题....

这两件事情都有冲突吗? ?

1 个答案:

答案 0 :(得分:3)

是的,他们是冲突的,毫无意义..

当使用hibernate内置生成器'increment'时,它是通过从启动时的最大主键值计数生成标识符的hibernate,在多JVM中不安全并且使用数据库AUTO_INCREMENT它是生成唯一标识的数据库新行。

在mySQL DB中,如果使用AUTO_INCREMENT,您应该在映射中使用identity来让数据库安全地生成唯一标识。

来自hibernate文档

<强>增量

  

生成long,short或int类型的标识符,这些标识符仅是唯一的   当没有其他进程将数据插入同一个表时。不要   在集群中使用。

<强>身份

  

支持DB2,MySQL,MS SQL Server,Sybase和中的标识列   HypersonicSQL。返回的标识符的类型为long,short或int。

更多信息
Hibernate Doc section 5.1.4.1. Generator
My sql AUTO_INCREMENT documentation