gpt4 book ai didi

java - JPA,GeneratedValue 自动递增 50

转载 作者:行者123 更新时间:2023-11-29 03:22:58 26 4
gpt4 key购买 nike

我正在使用 JPA,当我将数据插入数据库时​​,我的 ID 会自动增加 50。我正在使用 persistence.GeneratedValue 来自动增加它:

这是我的模型/实体类的样子(要插入的实体):

..imports
@Entity
public class Example extends Identifiable {
..
}

可识别:

..imports
@MappedSuperclass
public abstract class Identifiable {
@Id @GeneratedValue protected long id;
..
}

数据库:

#    ID    NAME    ...
1 701 a
2 751 b
3 801 c

有人知道问题出在哪里吗?

最佳答案

GeneratedValue.strategy 的默认值为 GenerationType.AUTO。 JPA 2 规范中清楚地说明了这意味着什么:

The AUTO value indicates that the persistence provider should pick an appropriate strategy for the particular database. The AUTO generation strategy may expect a database resource to exist, or it may attempt to create one. A vendor may provide documentation on how to create such resources in the event that it does not support schema generation or cannot create the schema resource at runtime.

对于TableGeneratorSequenceGenerator allocationSize 的默认值为 50。这意味着保留 50 个值的 block 。在关闭时,保留值将消失。如果应用程序在仅使用一个后关闭,则从 2 到 50 的值将消失,下一次将保留 51 到 100。如果需要对标识符生成进行更多控制,则应使用 auto 以外的策略。例如,可以按如下方式完成:

@TableGenerator(
name = "yourTableGenerator"
allocationSize = 1,
initialValue = 1)
@Id
@GeneratedValue(
strategy=GenerationType.TABLE,
generator="yourTableGenerator")

or:

@SequenceGenerator(name="yourSequenceGenerator", allocationSize=1)
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE,
generator="yourSequenceGenerator")

关于java - JPA,GeneratedValue 自动递增 50,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578985/

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