gpt4 book ai didi

hibernate - hibernate 生成器如何增量句柄删除

转载 作者:行者123 更新时间:2023-12-04 06:20:17 29 4
gpt4 key购买 nike

这就是我使用生成器的方式:

    <id name="id" column="column_name">
<generator class="increment"/>
</id>

private Integer id;

我看到的行为是:
  • 创建第一个对象
  • hibernate 分配 id = 1
  • 删除该对象
  • 关闭服务器并重新启动它(在答案后添加)
  • 创建第二个对象
  • hibernate 分配 id = 1

  • 注意:我预计新数字为 2,即使 1 不再存在。

    我只使用 HSQLDB 对此进行了测试。

    问题:这是预期的行为吗?

    AFAICT 在源代码中,下一个数字应该是 2 https://github.com/hibernate/hibernate-core/blob/master/hibernate-core/src/main/java/org/hibernate/id/IncrementGenerator.java#L68

    更新:根据拉尔夫的回答,如果我跳过第 4 步(不要关闭服务器),它会正确递增。这是因为该值在启动时设置为 max(id),然后存储在内存中。

    最佳答案

    IncrementGenerator"select max(" + column + ") from " + buf.toString(); 初始化哪里column是 ID 列。

    这意味着每次创建新的 IncrementGenerator 时(更准确地说:在调用 generate 之后第一次调用 configure),id 计数器将“重置”为数据库中的最大值。

    关于hibernate - hibernate 生成器如何增量句柄删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675169/

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