@TableGenerator(name="Emp_Gen",table="ID_GEN", pkColumnName = "GEN_NAME",pkColumnValue = "Employee_GEN",valueColumnName = "GEN_VAL",initialValue = 1000,allocationSize = 100)
一切都是可以的,但initialValue并不有效。下面是名为“employee”的表(注:MySql,使用Hibernate-JPA )

我认为第一行'id‘是1000,不是1,对吧?但是如果它是1,那么第二行应该是101……谁能帮助我成为一个愚蠢的人?
发布于 2012-11-10 05:00:52
第一个值是1而不是1001,这是Hibernate bug HHH-4228,状态不会修复。在本例中,正确的第一个值是1001而不是1000,因为initialValue初始化了存储最后返回的值的列(而不是要返回的下一个值)。
在persistence.xml中使用以下代码(在错误报告中也有建议)可以解决第一个值的问题:
<property name="hibernate.id.new_generator_mappings" value="true"/>allocationSize的含义可能会被误解。它不是递增步骤。这意味着表中的一个数据库查询分配了多少个值。当新实体需要id值时,这是相当优化的,以避免每次额外的查询。
副产品是应用程序重启经常会导致序列出现漏洞:
https://stackoverflow.com/questions/13303338
复制相似问题