我有一个实体
@Entity
@Table(name = "organization")
public class Organization {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@Column(name = "name")
private String name;
.
.
.
字符串
我创建了一个表:
create table organization (
id int generated always as identity primary key,
name text unique not null
);
型
这个查询的结果是在数据库中创建了organization_id_seq
。
当我发送请求并尝试插入数据时,它失败并显示错误消息
jdbc.spi.SqlExceptionHelper: ERROR: relation "organization_seq" does not exist
型organization_seq
实际上不存在,但organization_id_seq
存在,我如何解决这个问题?
我试过GenerationType.AUTO
,结果是同样的错误。
1条答案
按热度按时间643ylb081#
将
GeneratedValue.strategy
设置为GenerationType.IDENTITY
。当表具有PK的标识列时,这是正确的策略。
AUTO
所做的取决于PK和数据库的数据类型,在您的情况下,似乎最终会尝试使用序列。如果您想使用序列,请在模式创建脚本中创建一个具有正确名称的序列,并删除id列的标识声明。例如https://www.baeldung.com/hibernate-identifiers,了解如何生成id。