我在hbm文件中将生成器设置为'increment',并且我也将auto_increment事物放在数据库表中。 这个creteria显示问题....
这两件事情都有冲突吗? ?
答案 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