0

我正在为 Spring RESTful API 使用 PostgreSQL 数据库。我正在使用 Spring Data、Spring JPA 和 Hibernate。

为了生成自定义主键,我使用SequenceGenerator。一切正常。当我从数据库中删除一个表并希望再次创建它时,会出现问题,主键将再次从 1 开始。我出于某种原因从数据库中删除一个表,该表将再次创建。我正在使用 pgAdmin UI,我只是在删除表格。下次当我再次创建表时,Hibernate 仍然会记住最后生成的主键,因此它会从最后一个主键的下一个数字开始生成主键,从而生成一个完全不同的非 1,这正是我想要的。我认为原因是,虽然表已被删除,但休眠正在存储最后生成的主键的记录。

这就是为什么我正在寻求帮助,如何强制休眠从 1(一)开始为新创建的表生成主目录。

在属性文件中,我有以下属性:

spring.jpa.hibernate.ddl-auto=update

我尝试通过设置以下内容,

spring.jpa.hibernate.ddl-auto=create

它解决了该表的问题,但其余所有表也被重新创建,因此我丢失了所有数据。

这是我试图为其重新创建表的类。

@Data
@Entity
@Table(name = "professions")
public class Profession extends BasicEntity {

    @Id
    @Column(name = "profession_id", unique = true)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "profession_key_generator")
    @SequenceGenerator(name = "profession_key_generator", allocationSize = 1)
    private int profession_id;


    @Column(name = "profession_rus_title", unique = true)
    private String rusTitle;

    @Column(name = "profession_eng_title", unique = true)
    private String engTitle;

    @Override
    public Integer getId() {
        return profession_id;
    }

    public Profession(String rusTitle, String engTitle){
        this.rusTitle = rusTitle;
        this.engTitle = engTitle;
    }

    public Profession(){

    }
}
4

0 回答 0