Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA,生成值自动递增50_Java_Jpa_Entity - Fatal编程技术网

Java JPA,生成值自动递增50

Java JPA,生成值自动递增50,java,jpa,entity,Java,Jpa,Entity,我使用的是JPA,当我将数据插入数据库时,我的ID会自动增加50。 我正在使用persistence.GeneratedValue自动递增它: 这是我的模型/实体类的外观(要插入的实体): 可识别: ..imports @MappedSuperclass public abstract class Identifiable { @Id @GeneratedValue protected long id; .. } 数据库: # ID NAME ... 1

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

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

可识别:

..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值指示持久性提供程序应选择一个 针对特定数据库的适当策略。自动生成 策略可能期望数据库资源存在,也可能试图 创建一个。供应商可提供有关如何创建此类文件的文档 如果不支持架构生成或 无法在运行时创建架构资源

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

GeneratedValue.strategy的默认值为GenerationType.AUTO。这意味着什么在JPA 2规范中有很好的阐述:

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

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

您的数据库是Oracle吗?您的数据库是Oracle吗?以2秒递增。但是第一个很有魅力!谢谢,第二次递增2。但是第一个很有魅力!非常感谢。