首页 > 解决方案 > JPA 在哪里生成序列名称?

问题描述

遇到了一个奇怪的问题。我正在使用 JPA + spring 来处理我的实体。数据保存在 Postgresql 中。表由 JPA 生成。我没有创造任何一个。

实体“家庭”之一具有 ID 字段。

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="family_id",nullable = false, columnDefinition = "BIGINT")
private Long id;

因此,JPA(或休眠)生成一个具有序列“family_id_seq”的列。插入新条目时,它将查询 currval('family_id_seq')。一切都按预期工作。

今天当我调试我的程序时。突然我无法使用 JpaRepository 保存任何“家庭”。错误消息是 currval('family_family_id_seq') 不存在。

为什么我的 JPA 更改了生成的 seq 名称?我该如何控制?哪个 Spring JPA 类负责创建此查询?我希望我的序列名为“family_id_seq”。因为其他表的 seq 仍然遵循该规则。

标签: hibernatespring-bootjpa

解决方案


推荐阅读