[英]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生成策略可能期望数据库资源存在,或者可能尝试创建数据库资源。 如果供应商不支持架构生成或无法在运行时创建架构资源,则供应商可能会提供有关如何创建此类资源的文档。
对于TableGenerator和SequenceGenerator而言 ,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.