gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:17:30 25 4
gpt4 key购买 nike

@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)

a table named "employee"

我认为第一行“id”是 1000,而不是 1,对吧?但是如果是 1,第二行应该是 101....谁能帮帮我一个笨蛋?

最佳答案

第一个值为 1 而不是 1001 的 Hibernate 错误 HHH-4228 ,状态为 Won't fix。在您的情况下正确的第一个值是 1001 而不是 1000,因为 initialValue 初始化存储返回的 last 值的列(而不是要返回的下一个值)。

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

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

allocationSize 的含义可能在问题中被误解了。这不是递增的步骤。这意味着从表中的一个数据库查询分配了多少个值。这是为了避免每次在新实体需要 id 值时进行额外查询的优化。

副作用是应用程序的重新启动通常会导致序列出现漏洞:

  1. 初始值 = 1000,分配大小 = 100
  2. 使用值 1001(=> valueColumn 中的值更新为 1100)。
  3. 关闭并启动应用程序
  4. 下一个值将是 1101,而不是 1002。

关于mysql - Hibernate JPA不支持@TableGenerator的 "initialValue"元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com