繁体   English   中英

JPA,GeneratedValue自动增量为50

[英]JPA, GeneratedValue autoincrement with 50

我正在使用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规范很好地阐明了这意味着什么:

AUTO值指示持久性提供程序应为特定数据库选择适当的策略。 AUTO生成策略可能期望数据库资源存在,或者可能尝试创建数据库资源。 如果供应商不支持架构生成或无法在运行时创建架构资源,则供应商可能会提供有关如何创建此类资源的文档。

对于TableGeneratorSequenceGenerator而言 ,allocationSize的默认值为50。这意味着保留了50个值的块。 在关机时,保留值将消失。 如果仅使用一次后关闭应用程序,则2到50的值将消失,下次将保留51到100的值。 如果需要对标识符生成进行更多控制,则应使用自动以外的策略。 例如,可以这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM