【问题标题】:Standalone JPA sequence独立 JPA 序列
【发布时间】:2021-01-21 03:27:27
【问题描述】:

通过 SQL 可以定义一个序列,例如CREATE SEQUENCE sequence_name

可以使用 JPA 定义吗?我只知道在实体属性上定义的序列。我想避免仅仅为了能够定义一个序列而创建一个实体。

【问题讨论】:

  • 你是如何使用这个序列的?
  • 我有一个遗留表(在一个错误的数据库方案中),我需要在其中识别组。我可以使用 group by 来做到这一点,但为了让我的查询简单,并且因为我需要以编程方式添加新组,我决定添加一个 group_id 列作为假 1:N。我需要自动递增的序列,这样我就可以使用它为新的记录组生成 id。
  • 您说您不喜欢为序列创建实体,但您似乎已经有一个实体,以group_id为列,您不能为它定义序列字段,还是我理解错误?
  • 如果它们是独一无二的,那就是。但是由于这种丑陋的 hack,多行将具有相同的 group_id。如果这个表的实体有一个属性绑定序列,它会随着每个添加的行增加序列。因此,我需要以编程方式设置 group_id,并随着每个添加的组递增序列。
  • TBH 我建议不要对“非独立”序列使用模式生成。或者用于生成任何东西,就此而言。最好使用 Flyway 或 Liquibase 等数据库迁移工具

标签: java sql jpa spring-data-jpa


【解决方案1】:

您可以尝试在启动时创建它。 来自this 文档:

Spring Boot 可以自动创建 DataSource 的模式(DDL 脚本)并初始化它(DML 脚本)。它从标准根类路径位置加载 SQL:schema.sql 和 data.sql

例如将 SEQUENCE 创建放入data.sql

【讨论】:

  • 谢谢,这是一个有效的解决方案。不过,我想留下这个问题,因为我觉得这应该在 JPA 中实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
相关资源
最近更新 更多