@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 .... 谁能帮助我成为一个愚蠢的人?
答案 0 :(得分:7)
第一个值是1而不是1001是Hibernate bug HHH-4228,状态无法修复。在您的情况下,正确的第一个值是1001而不是1000,因为initialValue
初始化存储最后值的列(而不是要返回的下一个值)。
在persistence.xml中使用以下(在错误报告中也有建议)将解决第一个值的问题:
<property name="hibernate.id.new_generator_mappings" value="true"/>
allocationSize
的含义可能会被误解。这不是增加的步骤。它表示从表中使用一个数据库查询分配了多少个值。这是相当优化的,以便每当新实体需要id值时避免额外的查询。
副产品是重新启动应用程序会导致序列出现漏洞: