gpt4 book ai didi

postgresql - JPA SequenceGenerator 和 GeneratedValue : name/generator property unique only per class?

转载 作者:行者123 更新时间:2023-11-29 11:48:29 24 4
gpt4 key购买 nike

我使用 JPA + OpenJPA 和 PostgreSQL 作为后端 RDBMS。我的表的主键通常由 SERIAL/BIGSERIAL 列组成。因此 PostgreSQL 会自动为新条目生成 ID (strategy=GenerationType.IDENTITY)。

ID 属性的注解如下所示:

@Id
@SequenceGenerator(name="myseq",sequenceName="foobartable_fooid_seq")
@GeneratedValue(generator="myseq",strategy=GenerationType.IDENTITY)

我的问题是:我能否将此注释 block 复制并粘贴到多个实体,同时仅修改 sequenceName 值? sequenceName 因表而异。但是可以将所有实体的 SequenceGenerator 命名为 myseq 或类似的名称吗?或者是否必须为每个实体的 SequenceGenerator 指定一个唯一的生成器名称?这样每个 SequenceGenerator 名称在持久化单元中必须是唯一的?

在数据库中使用与 sequenceName 相同的值可能是个好主意吗?这样我就可以写类似

@Id
@SequenceGenerator(name="foobartable_fooid_seq",sequenceName="foobartable_fooid_seq")
@GeneratedValue(generator="foobartable_fooid_seq",strategy=GenerationType.IDENTITY)

关于如何命名 SequenceGenerators 有什么建议吗?

非常感谢您提出任何建议!

您的,斯鲁布先生

最佳答案

来自Javadoc对于 SequenceGenerator,重点是我的:

Defines a primary key generator that may be referenced by name when a generator element is specified for the GeneratedValue annotation. A sequence generator may be specified on the entity class or on the primary key field or property. The scope of the generator name is global to the persistence unit (across all generator types).

因此,您需要为持久性单元中定义的每个序列使用唯一的名称。在切线上,您的 GeneratedValue 策略应该是 SEQUENCE,如上面评论中所指出的。

关于postgresql - JPA SequenceGenerator 和 GeneratedValue : name/generator property unique only per class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14762483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com