JPA @SequenceGenerator 注释如何工作

新手上路,请多包涵

我正在学习 JPA,并且对 @SequenceGenerator 注释感到困惑。

据我了解,它会自动为实体的数字身份字段/属性分配一个值。

Q1。 这个序列生成器是利用数据库不断增加的数值生成能力还是自己生成数字?

Q2。 如果 JPA 使用数据库自动增量功能,那么它是否适用于没有自动增量功能的数据存储?

Q3。 如果 JPA 自己生成数值,那么 JPA 实现如何知道接下来要生成哪个值?它是否首先咨询数据库以查看最后存储的值以生成值(last + 1)?


Q4。 还请阐明 sequenceNameallocationSize 属性 @SequenceGenerator 注释。

原文由 Amit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 935
1 个回答

sequenceName 是数据库中序列的名称。这就是您指定数据库中已存在的序列的方式。如果你走这条路,你必须指定 allocationSize 它需要与数据库序列用作其“自动增量”的值相同。

用法:

 @GeneratedValue(generator="my_seq")
@SequenceGenerator(name="my_seq",sequenceName="MY_SEQ", allocationSize=1)

如果你愿意,你可以让它为你创建一个序列。但是要做到这一点,您必须使用 SchemaGeneration 来创建它。为此,请使用:

 @GeneratedValue(strategy=GenerationType.SEQUENCE)

此外,您还可以使用自动生成功能,它会使用一个表来生成 ID。使用此功能时,您还必须在某些时候使用 SchemaGeneration,以便创建生成器表。为此,请使用:

 @GeneratedValue(strategy=GenerationType.AUTO)

原文由 Kevin Crowell 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题