**已关闭。**此问题需要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
型
1条答案
按热度按时间67up9zun1#
在data.sql中,你手动插入id(1),而不使用序列,所以当hibernate尝试插入第一条记录时,序列将生成相同的id(1)。
要解决这个问题,您应该在从data.sql文件插入时递增序列,以便下次使用该序列时,它将生成id(2)。示例如下:
字符串