Hibernate JPA中不支持@TableGenerator的"initialValue"元素吗?

run*_*ter 2 mysql hibernate jpa-2.0

@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 ....谁可以帮助我一个愚蠢的人?

Mik*_*unu 7

它的第一个值是1而不是1001,即Hibernate bug HHH-4228,状态无法修复.在您的情况下,正确的第一个值是1001而不是1000,因为initialValue初始化存储返回的最后一个值的列(而不是要返回的下一个值).

在persistence.xml中使用以下(也在错误报告中建议)将修复第一个值的问题:

<property name="hibernate.id.new_generator_mappings" value="true"/>
Run Code Online (Sandbox Code Playgroud)

意义allocationSize可能会被误解.这不是增加的步骤.它表示从表中使用一个数据库查询分配了多少个值.这是相当优化的,以便每当新实体需要id值时避免额外的查询.

副产品是重新启动应用程序导致通常漏洞的顺序:

  1. initialValue = 1000,allocationSize = 100
  2. 使用值1001(= valueColumn中的值更新为1100).
  3. 关闭并启动应用程序
  4. 下一个值将是1101,而不是1002.