gpt4 book ai didi

java - H2数据库中@GenerateValue的问题

转载 作者:行者123 更新时间:2023-12-01 19:28:13 25 4
gpt4 key购买 nike

您好 StackOverflow 社区,我对注释 @GenerateValue 有疑问。我希望 JPA 生成我的 ID 列的值。但我还有另一个专栏,人们可以在其中编写某种任务(待办事项列表)。

我的代码如下所示:

    @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

private String name;

我有一个 SQL 数据文件,它在 h2 数据库的开头写入一些数据:

    INSERT INTO task VALUES(1, 'go to the gym');
INSERT INTO task VALUES(2, 'eat with tom');
INSERT INTO task VALUES(3, 'meetup');
INSERT INTO task VALUES(4, 'doing some homeworks');
INSERT INTO task VALUES(5, 'doing some exercise');
INSERT INTO task VALUES(6, 'studying with Mat');

我的问题是,当我删除 SQL 数据文件上的整数值时,我的编译器总是说我必须为任务声明一个 id,但我认为 @GenerateValue 自动生成id 是给我的吗?

最佳答案

您必须使用 @GenerateValue(strategy = GenerationType.IDENTITY)@GenerateValue(strategy = GenerationType.SEQUENCE) 并确保您有索引或序列数据库级别。另外,当使用自动生成的 id 时,插入时不要显式指定它们。

正确:

INSERT INTO task(description) VALUES('go to the gym');

but I thought the "@GenerateValue" automatically generate the id's for me?

这不是正确的假设,Hibernate 仅使用 db 提供的 ids。要使其正常工作,您需要为主键列创建索引/序列。

关于java - H2数据库中@GenerateValue的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60769689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com