我正在学习 JPA,并且对 @SequenceGenerator
注释感到困惑。
据我了解,它会自动为实体的数字身份字段/属性分配一个值。
Q1。 这个序列生成器是利用数据库不断增加的数值生成能力还是自己生成数字?
Q2。 如果 JPA 使用数据库自动增量功能,那么它是否适用于没有自动增量功能的数据存储?
Q3。 如果 JPA 自己生成数值,那么 JPA 实现如何知道接下来要生成哪个值?它是否首先咨询数据库以查看最后存储的值以生成值(last + 1)?
Q4。 还请阐明 sequenceName
和 allocationSize
属性 @SequenceGenerator
注释。
原文由 Amit 发布,翻译遵循 CC BY-SA 4.0 许可协议
sequenceName
是数据库中序列的名称。这就是您指定数据库中已存在的序列的方式。如果你走这条路,你必须指定allocationSize
它需要与数据库序列用作其“自动增量”的值相同。用法:
如果你愿意,你可以让它为你创建一个序列。但是要做到这一点,您必须使用 SchemaGeneration 来创建它。为此,请使用:
此外,您还可以使用自动生成功能,它会使用一个表来生成 ID。使用此功能时,您还必须在某些时候使用 SchemaGeneration,以便创建生成器表。为此,请使用: