首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hibernate JPA中是否不支持@TableGenerator的"initialValue“元素?

在Hibernate JPA中是否不支持@TableGenerator的"initialValue“元素?
EN

Stack Overflow用户
提问于 2012-11-09 14:42:54
回答 1查看 2.3K关注 0票数 2

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-10 05:00:52

第一个值是1而不是1001,这是Hibernate bug HHH-4228,状态不会修复。在本例中,正确的第一个值是1001而不是1000,因为initialValue初始化了存储最后返回的值的列(而不是要返回的下一个值)。

在persistence.xml中使用以下代码(在错误报告中也有建议)可以解决第一个值的问题:

代码语言:javascript
复制
<property name="hibernate.id.new_generator_mappings" value="true"/>

allocationSize的含义可能会被误解。它不是递增步骤。这意味着表中的一个数据库查询分配了多少个值。当新实体需要id值时,这是相当优化的,以避免每次额外的查询。

副产品是应用程序重启经常会导致序列出现漏洞:

  1. initialValue = 1000,allocationSize = 100
  2. Use value 1001 ( valueColumn中的start值更新为1100).
  3. shutdown,start application
  4. next值将为1101,而不是1002。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13303338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档