JPA SequenceGenerator 和 generatedValue:名称/生成器属性仅每个类唯一?

2024-02-20

我使用 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)

我的问题是:我可以将此注释块复制并粘贴到多个实体,同时仅修改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)

关于如何命名序列生成器有什么建议吗?

非常感谢您的任何建议!

你的, 斯恩鲁布先生


来自Javadoc http://docs.oracle.com/javaee/6/api/javax/persistence/SequenceGenerator.html for SequenceGenerator,重点是我的:

定义一个主键生成器,当 生成器元素是为 generatedValue 注释指定的。 A 序列生成器可以在实体类或 主键字段或属性。生成器名称的范围是 持久性单元的全局性(跨所有生成器类型)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA SequenceGenerator 和 generatedValue:名称/生成器属性仅每个类唯一? 的相关文章

  • PostgreSQL 中 JSON 数据类型的大小限制

    有谁知道 PostgreSQL 9 2 中 JSON 数据类型的大小限制是多少 查看 PostgreSQL 9 2 1 的源代码 Source postgresql 9 2 1 src backend utils adt json c In
  • PostgreSQL 锁定机制中的错误或对该机制的误解

    我们遇到了 PostgreSQL 9 0 12 锁定机制的问题 这是我们重现该问题的最小代码 Scenario Transaction 1 Transaction 2 BEGIN BEGIN select trees for update
  • 使用 docker 在 NodeJS 上对 Postgres 进行 ECONNREFUSED

    我正在使用 postgresql 构建一个在 NodeJS 上运行的应用程序 我使用 SequelizeJS 作为 ORM 为了避免使用真正的 postgres 守护进程并在我自己的设备上使用 nodejs 我使用带有 docker com
  • 如何在 PL/pgSQL 中“执行”CTE 查询?

    我尝试在下面的代码示例中模拟我的问题 在下面的代码中 我正在做一个select from test在一个程序中 众所周知 我们必须使用perform关键字为此 这很好用 perform from test 但是 如果我尝试将这个简单查询重写
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • 使用 PostgreSQL 的模式和 Rails 创建多租户应用程序

    我已经想通的事情 我正在学习如何在 Rails 中创建多租户应用程序 该应用程序根据用于查看应用程序的域或子域来提供来自不同模式的数据 我已经回答了一些问题 如何让 subdomain fu 也能与域一起使用 这是有人问了同样的问题 htt
  • Laravel 7.x eloquent addSelect 子查询来计数

    与 一起工作Laravel 7 x and Postgresql 我有一个User类和GroupPivot数据透视表 可以对多个模型进行分组 我想创建一个专栏User如果用户拥有针对该组的当前数据透视条目 则为 true 或 false 类
  • 如何将本机数据库运算符 (postgres ~) 与 JPA 标准生成器一起使用?

    我使用 JPA 2 0 标准构建以下查询 简化 select n from notif n where n message b la 我正在使用 postgresql 数据库 我真的需要 运算符 而不是像 我可以使用与 CriteriaBu
  • JPA - OneToOne 外键作为主键

    我有一个表 需要其主键作为其他表的外键 因此是单向的一对一关系 每本书只有一个作者 如下所示 Entity public class Author Id String code getters and setters Entity publ
  • PostgreSQL安装错误——无法分配内存

    我正在尝试从 sqlite3 切换到 PostgreSQL 以在 Rails 中进行开发 这样我就不会遇到任何 heroku 问题 我遵循了heroku和链接到的Railscast上给出的建议 但是在brew安装postgresql后遇到了
  • Mac psql/readline - 库未加载

    我正在 Mac Sierra 10 12 3 上工作 并且尝试通过以下方式访问 PostgreSQL 数据库psql命令 但它引发了错误 dyld Library not loaded usr local opt readline lib
  • 为什么 hibernate 在一张表中保存两个 @OneToMany 列表?

    想象一下使用 Hibernate 和 JPA 的简化代码如下 Entity class C Id GeneratedValue public long id MappedSuperclass abstract class A Id Gene
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处
  • 如何将 Google Data Studio 连接到 AWS RDS Postgres 实例?

    当我在 Data Studio 中创建新数据源时 系统会提示我输入客户端 服务器证书以建立安全连接 我在哪里可以获取此客户端证书和密钥 如何允许 Google Data Studio 连接到我的 RDS 实例 请执行下列操作 Add the
  • REASSIGN OWNED BY 为 1 个指定数据库

    我想使用以下命令更改一个特定数据库中所有表的所有者 REASSIGN OWNED BY postgres TO myuser 但它显示 ERROR cannot reassign ownership of objects owned by
  • 基于列顺序的查询速度

    数据库中列类型的顺序对查询时间有影响吗 例如 具有混合排序 INT TEXT VARCHAR INT TEXT 的表的查询速度是否会比具有连续类型 INT INT VARCHAR TEXT TEXT 的表慢 答案是肯定的 这确实很重要 而且
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • 从备份恢复 PostgreSQL 数据库,没有外键约束问题

    我有一个包含大约 85 个以上表的 postgresql 数据库 我定期使用pg dump 通过 php pgadmin 在复制模式下 备份文件的大小几乎为 10 12 MB 现在我面临的问题是 每当我尝试恢复数据库时 都会出现外键约束问题
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel

随机推荐