我正在为 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(){
}
}