数据库
首页 > 数据库> > mysql – Hibernate JPA中不支持@TableGenerator的“initialValue”元素吗?

mysql – Hibernate JPA中不支持@TableGenerator的“initialValue”元素吗?

作者:互联网

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

解决方法:

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

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

<property name="hibernate.id.new_generator_mappings" value="true"/>

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

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

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

标签:mysql,hibernate,jpa-2-0
来源: https://codeday.me/bug/20191008/1874358.html