Spring Boot 如何在Sping Boot 中使用初始数据库初始化从正确的数字继续索引?[已关闭]

zynd9foi  于 2023-08-04  发布在  Spring
关注(0)|答案(1)|浏览(100)

**已关闭。**此问题需要debugging details。它目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答这个问题。
3小时前关闭
Improve this question
我有一个问题,我明白,但不知道如何解决。我通过@Entity注解在应用程序中初始化一个数据库,并使用data.sql添加数据库条目(参见后面的代码)。在我想用@PostMapping添加新条目的情况下,我得到一个id错误,它告诉我id已经存在。
我的型号/实体:

@Entity
@Table(name = "items")
public class Item {

    @Id
    @SequenceGenerator(
            name = "entity_seq",
            sequenceName = "entity_sequence",allocationSize = 1)
    @GeneratedValue(
            strategy = GenerationType.SEQUENCE,
            generator = "entity_seq")
    private Long id;
    private String author;
    private String titleOfItem;
    private TypeOfItem typeOfItem;
    private LocalDate dateOfBorrowing;
    private Boolean isAvailable;
    private String imageUrl;
}

字符串
SQL数据:

INSERT INTO public.items (id, author, title_of_item, type_of_item, date_of_borrowing, image_url, is_available)
VALUES
    (1, 'Joanne. K. Rowling', 'Harry Potter and the Philosophers Stone', NULL, NULL, NULL);


应用属性:

# Data source
spring.datasource.url=jdbc:postgresql://localhost:5432/library
spring.datasource.username=postgres
spring.datasource.password=postgres

spring.jpa.hibernate.ddl-auto=create
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.format_sql=true
server.error.include-message=always

# Config for loading initial data
# create tables before inserting the data
spring.jpa.defer-datasource-initialization=true
spring.sql.init.mode=always

67up9zun

67up9zun1#

在data.sql中,你手动插入id(1),而不使用序列,所以当hibernate尝试插入第一条记录时,序列将生成相同的id(1)。
要解决这个问题,您应该在从data.sql文件插入时递增序列,以便下次使用该序列时,它将生成id(2)。示例如下:

INSERT INTO public.items (id, author, title_of_item, type_of_item, date_of_borrowing, image_url, is_available)
VALUES (
    nextval('entity_sequence'),  <--
    'Joanne. K. Rowling', 
    'Harry Potter and the Philosophers Stone', 
    NULL, 
    NULL, 
    NULL
);

字符串

相关问题