Java 未生成休眠序列

Java 未生成休眠序列,java,spring,postgresql,hibernate,sequence,Java,Spring,Postgresql,Hibernate,Sequence,我正在做一个Spring(不是Boot!)项目,使用Hibernate和PostgreSQL数据库。我也使用Flyway进行迁移。 我使用Flyway生成数据库的模式,并使用我的资源文件夹中给定的SQL脚本将初始数据插入数据库。因此,我从hibernate.properties文件中排除了hibernate.hbm2ddl.auto属性。 启动时,会创建模式并将数据插入数据库,但我的问题是,这样Hibernate不会生成其序列,并且我无法保存应用程序中的数据: org.postgresql.ut

我正在做一个Spring(不是Boot!)项目,使用Hibernate和PostgreSQL数据库。我也使用Flyway进行迁移。 我使用Flyway生成数据库的模式,并使用我的资源文件夹中给定的SQL脚本将初始数据插入数据库。因此,我从hibernate.properties文件中排除了hibernate.hbm2ddl.auto属性。 启动时,会创建模式并将数据插入数据库,但我的问题是,这样Hibernate不会生成其序列,并且我无法保存应用程序中的数据:

org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist

我可以用这个做什么?

您需要创建如下序列:

CREATE SEQUENCE hibernate_sequence START 1;

由于您没有提供任何代码,不确定哪里出了问题,假设缺少注释,我将提供一个适合我的注释

@Entity
@Table(name = "your_table")
@SequenceGenerator(name = "your_table_id_seq", sequenceName = "your_table_id_seq", allocationSize = 1)
public class YourTable implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "your_table_id_seq")
private Long id;
。 .
.

您应该提供模式。但是错误消息是说,
hibernate\u序列
不存在。所以你必须创建DB的序列,然后再试一次。我明白了。所以手动创建一个SQL脚本来创建hibernate_序列完全可以吗?是的。因为hibernate无法生成架构。现在它更好了,但仍然有错误。序列已创建,但现在我无法从应用程序插入数据,因为
org.postgresql.util.PSQLException:错误:重复的键值违反了唯一约束“user\u pkey”详细信息:key(id)=(1)已存在。
顺序如下:创建hibernate\u序列、创建表、插入数据。似乎在hibernate_序列中插入数据而不增加值?将
DEFAULT nextval('hibernate_序列')
添加到您的模式中的
id
谢谢,我也期待着实现此解决方案!