Java JPA,生成值自动递增50
我使用的是JPA,当我将数据插入数据库时,我的ID会自动增加50。 我正在使用persistence.GeneratedValue自动递增它: 这是我的模型/实体类的外观(要插入的实体): 可识别: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
..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。但是第一个很有魅力!非常感谢。