【问题标题】:Spring Data JPA bulk identifier generationSpring Data JPA 批量标识符生成
【发布时间】:2021-11-27 04:19:40
【问题描述】:

我有一个实体,除了主键之外,还应该生成一个额外的唯一标识符:

@Entity
class MyEntity(
   val otherId: String // <- this id is unique as well
) {
    @Id
    @Generated
    var id: UUID // PK
}

otherId 属性值是通过调用 SELECT nextval(...) 并添加前缀字符串从 postgres 序列值派生的。当我进行批量插入时,我必须求助于在我的 JPA 存储库中为实体定义的自定义查询,该查询一次检索多个序列值,但我想让这个过程自动化。

我尝试实现IdentifierGenerator 接口,但我能达到的最好效果是为每个插入的新实体进行一个SELECT nextval 查询,这在我的情况下是完全不可接受的,因为批次可以包含数百个实体。深入研究休眠细节也没有给我答案。

有没有办法通过一些回调/挂钩一次为多个实体生成多个 ID?还是我还得自己动手?

【问题讨论】:

    标签: postgresql hibernate kotlin jpa


    【解决方案1】:

    有钩子可以实现这个,看这篇文章为例:https://thorben-janssen.com/custom-sequence-based-idgenerator/

    为了提高性能,您必须配置增量大小,默认情况下为 50。这意味着它将序列增加 50,并将这些值放入一个池中,从该池中为身份生成提供这些值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2021-03-25
      • 2019-02-20
      • 2013-10-12
      • 2021-03-09
      • 2016-07-21
      • 2020-03-18
      相关资源
      最近更新 更多