我正在使用
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
UserDetails
表中的。但是,一旦我截断了UserDetails
表,它就不会从初始开始就开始ID值。我没有在数据库中提供SEQUENCE
,但它是按顺序添加的。
答案 0 :(得分:1)
首先,当您使用@GeneratedValue(strategy = GenerationType.AUTO)
注释时,持久性提供程序将根据主键属性的类型确定值。
此类型可以是numerical
或UUID
。对于numeric
值(您的情况),世代基于sequence
或表generator
。因此,主键值在数据库级别上是唯一的。
现在让我们回到您的问题。 您可以做的就是在数据库上找到生成的序列并重新创建它。
答案 1 :(得分:0)
如果您使用AUTO
,则如果您使用休眠模式,它将选择strategies
之一来生成您的ID。从参考:
AUTO-标识列,序列或表,具体取决于 基础数据库。
答案 2 :(得分:0)
我添加了
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_DATA")
@SequenceGenerator(sequenceName = "my_seq", allocationSize = 1, name = "SEQ_DATA")
private int id;
如果我要截断表,我将使用DROP SEQUENCE SEQ_DATA来DROP序列; 然后,我将再次创建SEQ_DATA。
创建序列SEQ_DATA最小值1最大值999999999999999999999 以1个增量乘以1个缓存20开始;